将Rails应用程序部署到Heroku时“无法加载此类文件”错误
我在我的Rails应用程序中使用了一个用于gmail的gem 。 我的Gemfile包含:
gem 'gmail-api-ruby', :require => 'Gmail'
在我的控制器中,我使用(使用devise / omniauth从Google获取refresh_token
)初始化gem:
Gmail.client_id = ENV['CLIENT_ID'] Gmail.client_secret = ENV['CLIENT_SECRET'] Gmail.refresh_token = current_user.refresh_token
这在开发中工作正常,但是当我部署到Heroku时,我收到以下错误:
/app/vendor/bundle/ruby/2.2.0/gems/bundler-1.7.12/lib/bundler/runtime.rb:76:in `require': cannot load such file -- Gmail (LoadError)
我无法弄清楚为什么。 我应该在我的应用程序中的其他地方要求gem吗?
- Ruby 2.2.0
- Bundler:1.8.5
- Rails:4.2.0
如果底层文件系统区分大小写(它在linux上,这是heroku的基础),则require
区分大小写
更改为:require => 'gmail'
而不是Gmail
,你应该没问题。
只需从您的Gemfile
删除无用的require
选项,因为bundler
可以在此gem中加载类,而不require
在您的情况下指定require
选项。
gem 'gmail-api-ruby', '~> 0.0.10'
并运行bundle install
。
仅供参考:请在此处阅读有关require
选项的部分。
- Ruby Mysql2通过代理(QuotaGuard)
- ActiveRecord :: AdapterNotSpecified数据库配置未指定适配器
- HEROKU – 无法运行git push heroku master
- -bash:/ usr / local / bin / heroku:/ usr / local / bin / ruby:bad interpreter:没有这样的文件或目录
- 即使我在开发块中有sqlite,Heroku也不接受推送
- 安装sqlite3时发生导轨应用程序错误导致Heroku错误,并且Bundler无法继续
- Rails – 配置DNS以使用Heroku(123-reg)进行托管
- Heroku / Rails:如何在Heroku上安装GNU Scientific Library(GSL)?
- Rails 3命令将我的CSS样式表的文本嵌入到HTML的头部