名称错误:未初始化常量Smtpapi。

3

我正在尝试将我的代码推送到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

Smtpapi在Ruby 2.4.2中不存在吗?

Smtpapi是Send-Grid gem和其他一些gem的一部分。

    sendgrid-ruby (1.1.6)
      faraday (~> 0.9)
      mimemagic
      smtpapi (~> 0.1)
    smtpapi (0.1.0)

1
Smtpapi是什么?它来自哪里?这是你正在使用的一个gem吗? - spickermann
它是send-grid的一部分 sendgrid-ruby(1.1.6) faraday(〜> 0.9) mimemagic smtpapi(〜> 0.1) smtpapi(0.1.0) - jdog
1个回答

6

sendgrid-ruby 依赖于 smtpapi,但仅限于 1.x 版本,后续版本包括当前的 5.3.0 版本不再需要。

由于此错误是随着 Ruby 更新而出现的 - 可能是由于 gem 更新引起的。这应该被 Gemfile.lock 防止,但如果 Gemfile 包含任何有关 Windows 的提及 (mswin, mingw 等),Heroku 将忽略它。

由于 SendGrid 重写了 sendgrid-ruby,因此该 gem 已经有 4 年没有更新了。 最好的选择是跟随他们并更新您的代码。 但在执行此操作之前,为了使应用程序正常运行 - 您可以显式锁定 sendgrid-ruby 的版本:gem 'sendgrid-ruby', '~>1.1.6'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接