如何在更新后保持Gemfile中的所有宝石兼容

The*_*dis 15 rspec ruby-on-rails bundler ruby-on-rails-3.1 gemfile

我的问题已在这里提出,但我试图了解其背后的原因,而不是如何解决它.

我得到的错误是;

You have already activated rspec-core 2.7.1, but your Gemfile requires rspec-core 2.6.4. Using bundle exec may solve this. (Gem::LoadError)
Run Code Online (Sandbox Code Playgroud)

现在我已经获得了各种解决方案,比如使用"mpapis-bundler",或创建"捆绑exec"的简写,但我的印象是那是什么

$bundle install --binstubs
Run Code Online (Sandbox Code Playgroud)

是为了.

更具体地说,由于我的gemfile中没有为rspec-rails声明的版本号,为什么我有这种不兼容性?我尝试时也发生了错误

$rake db:migrate
Run Code Online (Sandbox Code Playgroud)

告诉我

You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Consider using bundle exec.
Run Code Online (Sandbox Code Playgroud)

任何解释将不胜感激.

编辑:
我的应用程序的所有宝石都在宝石集中,我已经更新了我的宝石.更新是否应确保相关的宝石兼容?

apn*_*ing 34

当您在系统中安装比Rails应用程序中更新的宝石时,会发生这种情况.

Bundler只是告诉你,你必须坚持你的Gemfile状态.

这是运行的目的:

bundle exec rake db:migrate
Run Code Online (Sandbox Code Playgroud)

- >运行Gemfile提供的rake版本.

关于从gemfile更新gem,只需:

bundle update
Run Code Online (Sandbox Code Playgroud)

避免这种无聊的东西的最简单方法是通过创建gemsets来隔离你的宝石.我为此目的使用RVM.