gpt4 book ai didi

ruby-on-rails - 使用 Apache2 和 Passenger 跟踪 Rack gem

转载 作者:行者123 更新时间:2023-12-04 05:39:27 25 4
gpt4 key购买 nike

我们使用 Apache2 和 Passenger (v3.0.9) 部署多个应用程序。 App Foo 是一个 Rails 3.0.11 应用程序,app Bar 是一个 Rails 3.1.3 应用程序。这两个应用程序都使用 bundler 来管理它们的依赖项。根据我对 Passenger 文档的理解,Passenger 和 Bundler 按预期工作,为每个应用程序加载必要的依赖项。 Foo 依赖于 Rack 1.2.4,Bar 依赖于 Rack 1.3.5。

当部署 Bar 并运行 bundle install(通过 Capistrano)时,Rack 1.3.5 被安装。突然 Foo 收到以下 Passenger 错误:

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,但风险由 Bar 承担。另一个解决方案是将 Foo 升级到 Rails 3.1.x,但我想了解这里出了什么问题,因为将来我们可能会有运行不同版本的应用程序。

最佳答案

我处于类似情况:同一服务器上同一域下的一个 Rails 3.0.11 应用程序和一个 Rails 3.2.8 应用程序。

使用 Capistrano 进行部署。

在 config/deploy.rb 我有:

require 'bundler/capistrano'

在“cap deploy”期间,打包程序运行:

cd {app_path}/releases/{release} && bundle install --gemfile {app_path}/releases/{release}/Gemfile --path {app_path}/shared/bundle --deployment --quiet --without development test

这个(--path 和--deployment)在

中管理每个应用程序的 gem 存储库

{app_path}/shared/bundle/ruby/{ruby_version}/gems

所以在一个 Rail 3.0.11 应用程序中我有 rack-1.2.4 和 rails-3.0.11 而在 3.2.8 应用程序中我有 rack-1.4.1 和 rails-3.2.8 。两颗 gem 分开得很漂亮。

也许您可以清理这些 gemset 存储库。

关于ruby-on-rails - 使用 Apache2 和 Passenger 跟踪 Rack gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8897661/

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