Ruby on rails NameError:未初始化的常量Smtpapi
我正在将我的代码推送到Heroku,但是构建失败了Ruby on rails NameError:未初始化的常量Smtpapi,ruby-on-rails,ruby,heroku,Ruby On Rails,Ruby,Heroku,我正在将我的代码推送到Heroku,但是构建失败了 NameError: uninitialized constant Smtpapi /tmp/build_0ce2a697c4ef6c16626b01b82d9463f3/app/helpers/my_mailer_header.rb:1:in `<top (required)>' /tmp/build_0ce2a697c4ef6c16626b01b82d9463f3/lib/api_v1/users.rb:3:i
NameError: uninitialized constant Smtpapi
/tmp/build_0ce2a697c4ef6c16626b01b82d9463f3/app/helpers/my_mailer_header.rb:1:in `<top (required)>'
/tmp/build_0ce2a697c4ef6c16626b01b82d9463f3/lib/api_v1/users.rb:3:in `<top (required)>'
/tmp/build_0ce2a697c4ef6c16626b01b82d9463f3/lib/api_v1/mymedical.rb:3:in `<class:Mymedical>'
/tmp/build_0ce2a697c4ef6c16626b01b82d9463f3/lib/api_v1/mymedical.rb:1:in `<top (required)>'
/tmp/build_0ce2a697c4ef6c16626b01b82d9463f3/config/routes.rb:1:in `<top (required)>'
/tmp/build_0ce2a697c4ef6c16626b01b82d9463f3/vendor/bundle/ruby/2.4.0/gems/railties-4.2.11/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
sendgrid ruby
仅在版本1.x中依赖于smtpapi
,包括当前5.3.0在内的更高版本则不依赖
由于这个错误是在ruby更新时出现的,所以可能是因为gems更新。这应该通过Gemfile.lock
来防止,但是如果Gemfile包含任何提到windows的内容(mswin
,mingw
等),Heroku将忽略它
由于sendgrid重写了sendgrid ruby
,gem本身已经有4年没有更新了。
最好的选择是遵循它们并更新代码。
但要让应用程序在运行之前运行,您可以显式锁定sendgrid ruby的版本:
gem'sendgrid ruby',“~>1.1.6”
什么是Smtpapi
?它是从哪里来的?您使用的是gem吗?它是send grid sendgrid ruby(1.1.6)法拉第(~>0.9)mimemagic smtpapi(~>0.1)smtpapi(0.1.0)的一部分
class MyMailerHeader < Smtpapi::Header
sendgrid-ruby (1.1.6)
faraday (~> 0.9)
mimemagic
smtpapi (~> 0.1)
smtpapi (0.1.0)