NameError:未初始化的常量Smtpapi

时间:2019-02-20 15:53:42

标签: 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: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)

1 个答案:

答案 0 :(得分:6)

sendgrid-ruby仅在版本1.x中取决于smtpapi,而包括当前版本5.3.0的更高版本无关。

由于此错误是随ruby更新一起出现的-可能是由于gem更新引起的。 Gemfile.lock可以防止这种情况发生,但是如果Gemfile包含Windows的任何提及(mswinmingw等),Heroku都会忽略它。

gem本身至今尚未更新4年,因为sendgrid重新编写了sendgrid-ruby。 最好的选择是跟随他们并更新您的代码。 但是要使应用程序在运行之前运行-您可以显式锁定sendgrid-ruby的版本:gem 'sendgrid-ruby', '~>1.1.6'