【发布时间】:2012-01-17 15:54:36
【问题描述】:
我们使用 Apache2 和 Passenger (v3.0.9) 部署多个应用程序。 App Foo 是 Rails 3.0.11 应用程序,而 app Bar 是 Rails 3.1.3 应用程序。这两个应用程序都使用捆绑程序来管理它们的依赖关系。根据我对乘客文档的理解,Passenger 和 Bundler 按预期工作,为每个应用程序加载必要的依赖项。 Foo 依赖于 Rack 1.2.4,Bar 依赖于 Rack 1.3.5。
当 Bar 被部署,并且 bundle install 开始运行(通过 Capistrano),Rack 1.3.5 被安装。突然 Foo 收到以下乘客错误:
Gem::LoadError - You have already activated rack 1.3.5, but your Gemfile requires rack 1.2.4. Using bundle exec may solve this.
该消息试图提供帮助,但我不确定应该在哪里运行 bundle exec。我也尝试按照其他地方的建议进行 bundle install --path vendor/cache ,但这似乎没有帮助。
我可以卸载 Rack 1.3.5,但后果自负。另一个解决方案是将 Foo 升级到 Rails 3.1.x,但我想了解这里出了什么问题,因为将来我们可能会有运行不同版本的应用程序。
【问题讨论】:
-
我最终只是删除了 config.ru 文件,我想这会使该应用程序不是 Rack 应用程序。有人愿意评论该解决方案吗?
-
我也遇到了同样的问题,以后有更好的解决方案吗?
-
Kanzeon,我已经有几个月没有参与遇到这个问题的组织了。我们刚刚决定删除 config.ru 文件,一切似乎都正常。我看到几天前 Martin M 发布了一个解决方案。我不方便验证这一点,所以如果它适合你,请支持他的解决方案。
标签: ruby-on-rails apache2 passenger bundler rack