我在debian上有乘客3.0.9,宝石架1.3.2和1.2.1。
使用带有乘客捆绑器的rails 3.0应用程序时出现此错误:
您已经激活了机架1.3.2,但您的Gemfile需要机架1.2.3。考虑使用bundle exec。
使用rails 3.1就可以了。我无法使用rails 3.0启动应用程序,但只能使用3.1。
Passnnger加载第一个机架1.3.2并且不要在捆绑器的宝石上装载机架1.2.3
答案 0 :(得分:3)
简短回答:
你需要运行
bundle update rack
这将在Gemfile.lock中更新您的机架版本
更长的答案:
当您激活的机架/ rake版本与rails app的机架/ rake版本不同时,通常会发生此错误。当您运行“bundle install”时,由于依赖性,一些关键的gem将无法获得更新。
这就是为什么你需要运行'捆绑更新'(对于所有宝石),或'捆绑更新a_specific_gem'来更新Gemfile.lock中的某个宝石,如rack / rake。
答案 1 :(得分:1)
对我有用的是:
Gemfile.lock
bundle install
问题已解决。
答案 2 :(得分:0)
我在Dreamhosters.com上与最近的客户有这个问题。我相信我所做的是更新我的Gemfile以指定已经“激活”的版本,然后重建Gemfile.lock。
在我的情况下,问题是rails在我的本地宝石之前找到了系统宝石,并且无法优雅地处理冲突。它是在3.0.3上我在我的开发盒上没有相同的问题,我使用rvm并且根本没有安装系统ruby / rails。
我不知道这会解决您的问题,但它至少可以为您提供进一步研究的起点。我通过Google搜索错误消息找到了很多链接。
答案 3 :(得分:0)
5 whys对您问题的回复是:
Phusion Passenger没有使用你的应用程序捆绑的宝石,而是另一组宝石。
这可能是因为许多不同的原因,但所有这些原因都与您的特定系统(操作系统,apache / nginx,ruby,环境变量......)有关。
强制该用户的捆绑路径
BUNDLE_PATH:/home/xxxxxxx/.bundler到RAILS_ROOT / .bundle / config
甚至更好地使用捆绑部署选项在vendor / bundle
中安装gem捆绑安装 - 部署