ruby-on-rails - NameError: 未初始化的常量 Smtpapi
问题描述
我很想将我的代码推送到 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 gem 和其他一些 gem 的一部分。
sendgrid-ruby (1.1.6)
faraday (~> 0.9)
mimemagic
smtpapi (~> 0.1)
smtpapi (0.1.0)
解决方案
sendgrid-ruby
仅依赖smtpapi
于版本 1.x,包括当前 5.3.0 在内的更高版本不依赖。
由于此错误是随着 ruby 更新而出现的 - 这可能是由于 gems 更新造成的。这应该被 阻止Gemfile.lock
,但如果 Gemfile 包含任何提及 windows (mswin
等mingw
),Heroku 将忽略它。
gem 本身已经 4 年没有更新了,因为 sendgrid 重写了sendgrid-ruby
. 最好的选择是关注他们并更新您的代码。但是要让应用程序在您执行此操作之前运行 - 您可以显式锁定 sendgrid-ruby 的版本:gem 'sendgrid-ruby', '~>1.1.6'
推荐阅读
- git - 合并远程分支的修改提交中的更改?
- azure - 用于从 azure Active Directory 安全组中删除成员的 api url
- java - 控制器中的并行流中没有线程绑定请求错误
- android - Android WebRTC 支持的编解码器
- android - 未知属性 android:fullBackupContent
- node.js - AWS Lambda Node Js - 如果存在则增加值,否则添加元素
- javascript - 动态更改 SAP Fiori 标题时“this.getService 不是函数”
- javascript - 如何使用 vanilla JavaScript 从任何网站读取元素?
- php - 在主页上爆炸wp帖子标题
- javascript - IIFE 以不同的结果运行函数声明和函数表达式