如何强制机架围绕通常的"你已经激活机架......"错误?

use*_*547 25 rack ruby-on-rails

这是一个常见的问题,但没有一个答案似乎可以解决这个问题.我得到通常的:You have already activated rack 1.4.1, but your Gemfile requires rack 1.3.6. Using bundle exec may solve this.

清除Gemlock文件什么都没做,bundle install再次运行bundle install --binstubs没有做任何事情......运行没有解决问题,因为从你的应用程序根"运行./bin/{rake|rails|etc"只是造成了更多的错误.有没有办法解决这个看似常见的问题?

Joh*_*lla 33

问题是这样的:

  • 您已安装(至少)两个版本的Rack.

  • 您的Gemfile需要一个版本(1.3.6).您当前的环境正在提供另一个版本(1.4.1).

  • 当您的应用程序执行时,当前环境已经加载了1.4.1.

  • Bundler知道你需要加载1.3.6,但它无法加载它.您可能无法加载同一个gem的多个版本,因此1.4.1版本因为首先加载而获胜.

  • Bundler向你抱怨.

卸载有问题的宝石(例如gem uninstall rack -v 1.3.6).更好的是,使用RVM和gemsets更好地隔离你的宝石,你不会遇到这个问题.