我想将代码推送到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: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'
我将我的Gemfile从Ruby 2.3更新为2.4,现在出现此错误?找不到解决方案。
这似乎是导致问题的代码。
class MyMailerHeader < Smtpapi::Header
Ruby 2.4.2中不存在Smtpapi吗?
Smtpapi是Send-Grid宝石和其他一些宝石的一部分。
sendgrid-ruby (1.1.6)
faraday (~> 0.9)
mimemagic
smtpapi (~> 0.1)
smtpapi (0.1.0)
答案 0 :(得分:6)
sendgrid-ruby
仅在版本1.x中取决于smtpapi
,而包括当前版本5.3.0的更高版本无关。
由于此错误是随ruby更新一起出现的-可能是由于gem更新引起的。 Gemfile.lock
可以防止这种情况发生,但是如果Gemfile包含Windows的任何提及(mswin
,mingw
等),Heroku都会忽略它。
gem本身至今尚未更新4年,因为sendgrid重新编写了sendgrid-ruby
。
最好的选择是跟随他们并更新您的代码。
但是要使应用程序在运行之前运行-您可以显式锁定sendgrid-ruby的版本:gem 'sendgrid-ruby', '~>1.1.6'