Rails没有在Gemfile中运行gem

Mit*_*tch 2 gem rvm ruby-on-rails-3

我在RVM环境中运行Rails 3.2.1和Ruby 1.9.2-p290

在我的dev文件夹中,我有许多不同的Rails应用程序,都运行上面的,但我还没有创建单独的gemsets

我创建了一个带有自己的gemfile的新应用程序,运行了bundle install等等,所有这些都没问题,直到我回到我最初工作的主应用程序

当我现在做一个rake路线时,我得到了错误

rake aborted!
You have already activated rake 10.0.3, but your Gemfile requires rake 10.0.2. Using bundle exec     may solve this. 
Run Code Online (Sandbox Code Playgroud)

我想我知道如何回到正轨,但这是我不明白的地方:

当我查看.rvm/gems/ruby​​-1.9.2-p290/gems文件夹时,我可以看到rake-0.8.7,rake-0.9.2.2,rake-10.0.2的每个宝石的文件夹,耙10.0.3

所以我安装了一个版本的rake 10.0.2,我的主应用程序gemfile.lock调用rake(10.0.2),当我运行bundle exec rake路由时它实际上工作(假设运行10.0.2?),但是当我Rails运行一个直接的rake路线,似乎想要运行不同版本的Rake而不被要求.

所以我的问题是如何知道安装的Gem的哪个版本实际上正在运行,因为调用已安装的Gem的特定版本似乎没有按照您的预期进行?

(另外,我想如果我在同一个RVM空间内开发不同的应用程序,我应该为每个应用程序创建单独的gemsets?)

mpa*_*pis 6

这个问题在rubygems 2.0中得到修复 - 可以尊重Gemfile加载任何可执行的gem.

至于你的问题,RVM附带我的gem安装rubygems-bundler,如果可能的话它应该会自动解决依赖关系 - 如果没有安装正确的版本,它会回退你的问题,在这种情况下有一个更改情况以引发异常的票证 - https: //github.com/mpapis/rubygems-bundler/issues/37

基本上 - 确保bundle install在项目中执行任何操作之前运行,并rubygems-bundler确保运行正确版本的gem.

  • 运行:`gem install ruby​​gems-bundler; gem regenerate_binstubs`.如上所述,它应该注意选择合适的耙子版本. (2认同)