【问题标题】:Resolving a dependency mess解决依赖混乱
【发布时间】:2011-05-20 23:17:07
【问题描述】:

试图挤入一个相当新的 gem,这导致我在更新包括 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,我无法弄清楚它在哪里/如何加载或尝试加载它。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails dependencies rack


    【解决方案1】:

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

    bundle exec script/console
    

    在后台,它执行以下操作:

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

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

    PS:如果您的问题是我认为的问题,那么这里的问题是 script/console 正在提取您的系统 gem 而不是 bundler 提供的那些,这就是您看到的原因不正确的 Rack 版本和其他 gem 的加载错误。

    【讨论】:

    • 另外需要注意的是,您应该使用正确的Rails 2.3 installation procedure for bundler。还有其他方法大多有效,但有这样的问题,所以值得检查。
    • 是的,将 rails 版本从 2.3.3 更改为 2.3.6 似乎并没有真正升级 Rails 应用程序。也许是因为我的应用以某种方式出售了一些旧数据?
    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 2011-09-10
    • 1970-01-01
    相关资源
    最近更新 更多