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

时间:2011-09-06 16:48:10

标签: ruby-on-rails ruby rack

我在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

4 个答案:

答案 0 :(得分:3)

简短回答:

你需要运行

bundle update rack

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

更长的答案:

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

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

答案 1 :(得分:1)

对我有用的是:

  1. 清除Gemfile.lock
  2. 运行bundle install
  3. 问题已解决。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

5 whys对您问题的回复是:

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

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

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

      

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

  • 甚至更好地使用捆绑部署选项在vendor / bundle

    中安装gem
      

    捆绑安装 - 部署