为什么我的环境要求我运行bundle exec?

时间:2011-11-12 17:15:10

标签: ruby-on-rails ruby-on-rails-3 rake gemfile

每当我运行rake命令(即rake routes)时,我都会收到此错误:

You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Using bundle exec may solve this.

如果我运行bundle exec rake routes则可行。

我希望能够简单地rake routes而无需运行bundle exec rake routes

我已经查看了其他类似错误的问题,并尝试了各种解决方案(如运行bundle update)无济于事。

另外,在gemfile我指定的gem 'rake', '0.9.2'

有什么建议吗?

4 个答案:

答案 0 :(得分:8)

尝试执行:

gem list

您可能会看到为rake安装了几个版本。顺便说一下,bundle exec是在rails应用程序的上下文中执行代码的正确方式,请参阅this以获得一个很好的解释。因此,您可以使用别名来输入less。

答案 1 :(得分:2)

如果您使用rvm。你可以试试

rvm gem list

答案 2 :(得分:2)

正如@lucapette所说,你可能有多个版本的rake。假设您确实要使用0.9.2,您可以删除0.9.2.2版本以消除警告然后运行bundle install以确保您拥有所需版本的所有正确的gem版本(在您的情况下为0.9.2,在我下面的例子中为0.8.7。

以下是步骤:

$ gem list

*** LOCAL GEMS ***

...
rake (0.9.2.2, 0.8.7)
...

$ gem uninstall rake

Select gem to uninstall:
 1. rake-0.8.7
 2. rake-0.9.2.2
 3. All versions
> 2

You have requested to uninstall the gem:
        rake-0.9.2.2
addressable-2.2.6 depends on [rake (>= 0.7.3)]
...
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn]  Y
Successfully uninstalled rake-0.9.2.2
INFO:  gem "0.9.2.2" is not installed

$ bundle install

答案 3 :(得分:0)

如果gemfile中的某些gem需要较旧版本的Rake到您安装的版本,则可能会看到此消息。也许你已经更新了rake。您通常可以通过更新宝石来修复它。运行:

bundle update

这将使用gemfile中最新的gem更新您的包。这可能会解决耙子不兼容问题。