解决依赖混乱

时间:2011-05-20 23:17:08

标签: ruby-on-rails dependencies rack

试图挤进一个相当新的宝石,它让我偶然发现更新其他一些东西,包括Rails整体从2.3.5到2.3.6。

Bundler安装得很好。

但是当我启动script/console时,我明白了:

Loading development environment (Rails 2.3.3)
/Users/macuser/Sites/hq_channel/config/../vendor/rails/railties/lib/initializer.rb:271:in `require_frameworks':RuntimeError: can't activate rack (~> 1.0.0, runtime), already activated rack-1.1.0. Make sure all dependencies are added to Gemfile.
/Library/Ruby/Gems/1.8/gems/bundler-1.0.10/lib/bundler/shared_helpers.rb:117:in `gem': can't activate rack (~> 1.0.0, runtime), already activated rack-1.1.0. Make sure all dependencies are added to Gemfile. (Gem::LoadError)
    from /Users/macuser/Sites/hq_channel/vendor/rails/actionpack/lib/action_controller.rb:34
  1. 奇怪的是它说Rails 2.3.3 ..不确定原因..

  2. 我现在无法确定装载或尝试加载Rack 1.0.0的位置/方式,因为我已将其更新为Rack 1.1.0。

  3. 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您正在使用Bundler并使用本地二进制文件遇到依赖性问题,请尝试使用bundle exec为该脚本添加前缀:

bundle exec script/console

在幕后,这会做到以下几点:

  1. 启动一个调用Bundler.setup的新ruby进程(从而加载所有的bundler deps)
  2. 在Bundler依赖项
  3. 的上下文中执行您传递的命令bundler exec

    这往往可以解决大多数问题。如果您之后仍然遇到问题,最好的办法是验证shell的环境变量是否正确并从那里进行调试。

    PS :如果您的问题是我认为的问题,那么问题是script/console正在拉动您的系统宝石,而不是捆绑器提供的宝石,这就是为什么你'重新看到不正确的Rack版本,并为你的其他宝石获得加载错误。