Ruby on rails 捆绑机没有';t在生产rails应用程序中加载gem

Ruby on rails 捆绑机没有';t在生产rails应用程序中加载gem,ruby-on-rails,ruby,gem,bundler,Ruby On Rails,Ruby,Gem,Bundler,我遇到了一个问题,在rails应用程序中bundler没有加载单个gem,而只是在生产环境中加载-在开发模式下使用gem没有问题 gem是,我们已经在版本1.1.3和github存储库中进行了尝试。该应用程序使用的是rails 3.2.11 服务器上存在gem的证明 bundler在生产环境中成功安装了gem: $ RAILS_ENV=production bundle install ... Using coffee-rails (3.2.2) Using country_select (1.

我遇到了一个问题,在rails应用程序中bundler没有加载单个gem,而只是在生产环境中加载-在开发模式下使用gem没有问题

gem是,我们已经在版本1.1.3和github存储库中进行了尝试。该应用程序使用的是rails 3.2.11

服务器上存在gem的证明 bundler在生产环境中成功安装了gem:

$ RAILS_ENV=production bundle install
...
Using coffee-rails (3.2.2)
Using country_select (1.1.3)
Using daemons (1.1.9)
...
Your bundle is complete! It was installed into /home/deploy/rails-app/shared/bundle
gem出现在bundler安装到的共享gem目录中:

$ ls -al /home/deploy/rails-app/shared/bundle/ruby/1.9.1/gems/ | grep country
drwxrwxr-x  3 deploy deploy 4096 Apr  3 08:49 country_select-1.1.3
从控制台启动rails时会加载gem:

$ RAILS_ENV=production script/rails c
Loading production environment (Rails 3.2.11)
irb(main):002:0> Gem.loaded_specs.keys.grep /country/
=> ["country_select"]
然而。。。 在rails应用程序中对
country\u select
gem的相同检查失败。例如:

class ApplicationController < ActionController::Base

  before_filter do
    raise Gem.loaded_specs.keys.grep(/country/).inspect
  end

  #...
end
更新:2013年4月5日 这个问题似乎已经“消失了”。经过几次重新部署后,它似乎正在发挥作用。尽管国家选择的创业板没有改变,这是非常奇怪的。我仍在研究那段时间到底发生了什么变化,但我感到困惑。

试试跑步

RAILS_ENV=production bundle exec script/rails c

我有一个应用程序使用相同的版本,我不需要在开发或生产中使用gem。我还尝试了在筛选之前使用您的
,得到了预期的
[“国家/地区选择”]
。所以问题不在于宝石


我认为你要么在初始化的某个地方(不太可能)摆弄加载的gems,要么服务器的设置出了问题。您是否使用
RAILS\u ENV=production bundle exec script/RAILS server
启动服务器?你能检查服务器使用的gem路径是否包括你在问题中提到的共享gem路径吗?

你能将我们链接到你的Gemfile吗?@瑞安当然,我总是在启动时将require放在代码的某个地方-这不是常见做法吗?@lightswitch05 rails 3默认情况下会在config/application.rb中使用bundler。但如果不使用bundler或更早的rails版本,它将是必需的。我有这个问题,它将我的rails应用程序置于500 only模式下生产。。。你做了什么让它消失了吗?或者bundler是在几天后才开始工作的?谢谢你的回复,但这没有帮助-gem是从控制台加载的,而不是从web应用加载的
bundle exec
解决了安装多个版本gem的问题,但这不是问题所在。感谢您的回复。我不是这样启动服务器的,因为我使用thin作为代理,Nginx作为web服务器。此外,我还检查了GEM_PATH环境变量,但bundler似乎没有使用它——它使用了.bundle/config中的内容,这是正确的共享目录。我还发现了其他问题,请参见我对原始问题的编辑。
RAILS_ENV=production bundle exec script/rails c