gpt4 book ai didi

ruby-on-rails - Bundler 不会在生产 rails 应用程序中加载 gem

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:05 26 4
gpt4 key购买 nike

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

gem 是 country_select ,我们已经在 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_select gem 的相同检查失败。例如:

class ApplicationController < ActionController::Base

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

#...
end

吐出 [] - 即 gem 未加载。此外,依赖 gem 的部分应用程序会因 gem 不存在而失败。

最后,问题

简单地在启动的某处添加一个 require 'country_select' 意味着 gem 被加载,应用程序运行。但是为什么 bundler 不使用那个特定的 gem,尽管它安装了它并将它添加到应用程序的 gem 目录中?

关于生产环境的更多信息:

$ rvm -v
rvm 1.18.18 (stable)...
$ ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-linux]
$ gem -v
1.8.25
$ bundle -v
Bundler version 1.3.2

更新:2013 年 4 月 5 日

问题似乎“消失了”。经过几次重新部署后,它似乎正在发挥作用。尽管 country_select gem 没有被更改,但这是非常奇怪的。我仍在研究那段时间到底发生了什么变化,但我很困惑。

最佳答案

尝试运行

RAILS_ENV=production bundle exec script/rails c

关于ruby-on-rails - Bundler 不会在生产 rails 应用程序中加载 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15784224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com