将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选项的部分。