【问题标题】:New Gems Not Found in Production with Rails 3, Bundler and RVM使用 Rails 3、Bundler 和 RVM 在生产中找不到新的 Gem
【发布时间】:2013-03-13 10:29:12
【问题描述】:

我最近为 Rails 3 应用程序设置了生产服务器。

在初始部署时一切正常。在随后的部署中,没有找到添加到项目中的新 gem。当我分别从新添加的 gem 中引用类和方法时,我收到了 uninitialized constantundefined method 错误。

当我最初设置时,我使用的是带有 RVM 的 gemset,但我试图通过删除 gemset 并仅使用 RVM 来管理红宝石来简化事情。

当我运行bundle list 时,一切都在那里。所有的宝石都在<app_root>/shared/bundle/ruby/1.9.1/gems/

似乎它正在从其他位置加载宝石,例如原始宝石集,但我已将其删除。

其他一些细节,我用的是Capistrano,当然是Unicorn,我的GEM_HOME=/home/deployer/.rvm/gems/ruby-1.9.3-p286

如果我能提供任何其他信息,请告诉我。

谢谢。

【问题讨论】:

  • 删除 gemset 后是否再次运行 bundle_install
  • 是的,我做到了。我在每次部署时重新启动独角兽。我重新启动了几次。我做了一个句号然后开始,这似乎已经修复了一些东西,至少是暂时的,但我不相信它是永久修复的。稍后我将使用新的 gem 再次对其进行测试,看看行为是否相同。

标签: ruby-on-rails rvm bundler


【解决方案1】:

如果您使用bundle install --deployment,那么您还必须在执行命令时在命令前加上bundle exec,例如:

bundle exec rake db:migrate

如果您使用 bundler/capistrano 集成,那么它会在 capistano 中为您执行此操作,但在控制台中您需要手动使用 bundle exec

RVM 使用 rubygems-bundler gem 帮助您避免这种情况 - 但您更改了 gemset,因此生成的包装器不再可用。您必须清理 <app_root>/shared/bundle/ruby/1.9.1/gems/ 并再次运行 bundle install 以重新生成包装器以避免再次输入 bundle exec

【讨论】:

    【解决方案2】:

    我也有类似的问题。事实证明 Capistrano 没有正确重启独角兽。 SSH 进入服务器并停止然后启动独角兽就完成了这项工作。现在来解决 Capistrano 的恶作剧...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多