机架1.3.2的问题。 您已经激活了机架1.3.2,但您的Gemfile需要机架1.2.3

我有debian的乘客3.0.9,gem机架1.3.2和1.2.1。

使用带有乘客e bundler的rails 3.0应用程序,我有这样的错误:

您已经激活了机架1.3.2,但您的Gemfile需要机架1.2.3。 考虑使用bundle exec。

使用rails 3.1就可以了。 我无法使用rails 3.0启动应用程序,但只能使用3.1。

Passnnger加载第一个机架1.3.2并且不要在捆绑器的gem上装载机架1.2.3

简短回答:

你需要跑

bundle update rack 

这将在Gemfile.lock中更新您的机架版本

更长的答案:

当您激活的机架/ rake版本与rails app的机架/ rake版本不同时,通常会发生此错误。 当您运行“bundle install”时,由于依赖性,一些关键gem将无法获得更新。

这就是为什么你需要运行’捆绑更新’(对于所有gem),或’捆绑更新a_specific_gem’来更新Gemfile.lock中的某个gem,如rack / rake。

对我有用的是:

  1. 清除你的Gemfile.lock
  2. 运行bundle install

问题已解决。

我在Dreamhosters.com上遇到了这个与最近的客户有关的问题。 我相信我所做的是更新我的Gemfile以指定已经“激活”的版本,然后重建Gemfile.lock。

在我的情况下,问题是rails在我的本地gem之前找到了系统gem,并且无法优雅地处理冲突。 它是在3.0.3上我在我的开发盒上没有相同的问题,我使用rvm并且根本没有安装系统ruby / rails。

我不知道这会解决你的问题,但至少可以为你提供进一步研究的起点。 我通过Google搜索错误消息找到了很多链接。

对您的问题的5个回应是:

Phusion Passenger没有使用你的应用程序捆绑的gem,而是另一组gem。

这可能是因为许多不同的原因,但所有这些原因都与您的特定系统(OS,apache / nginx,ruby,环境变量……)有关。

  • 确保你的Gemfile是正确的(特别是’源’行)
  • 知道哪个用户正在运行您的Phusion Passenger(通常与您的Web服务器相同)
  • 强制该用户的捆绑路径

    BUNDLE_PATH:/home/xxxxxxx/.bundler到RAILS_ROOT / .bundle / config

  • 甚至更好地使用bundle部署选项在vendor / bundle中安装gem

    捆绑安装 – 部署