安装rbenv并更改Ruby版本后,Rake不再运行

时间:2012-03-14 00:21:46

标签: ruby-on-rails rake bundler rbenv

安装Rbenv和Ruby 1.9.2和1.8.7,并将当前项目设置为使用1.9.2(之前使用的是1.8.7)后,Rake将不再运行。正在运行rake routes会显示以下消息:

Could not find rake-0.8.7 in any of the sources
Run `bundle install` to install missing gems.

此后运行bundle install

尝试bundle exec rake routes(这是安装Rbenv之前使用的方法)会产生以下错误:

NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /Library/Ruby/Gems/1.8/gems/bundler-1.0.9/lib/bundler/shared_helpers.rb:3.
Invalid gemspec in [/Users/jackrg/Documents/Novelty-Stats/vendor/local/ruby/1.8/specifications/jquery-rails-1.0.19.gemspec]: invalid date format in specification: "2011-11-26 00:00:00.000000000Z"
Invalid gemspec in [/Users/jackrg/Documents/Novelty-Stats/vendor/local/ruby/1.8/specifications/tilt-1.3.3.gemspec]: invalid date format in specification: "2011-08-25 00:00:00.000000000Z"
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /Library/Ruby/Gems/1.8/gems/bundler-1.0.9/lib/bundler/source.rb:161.
NOTE: Gem::SourceIndex#each is deprecated with no replacement. It will be removed on or after 2011-11-01.
Gem::SourceIndex#each called from /Library/Ruby/Gems/1.8/gems/bundler-1.0.9/lib/bundler/source.rb:161.
Could not find rake-0.8.7 in any of the sources

请注意,应用程序本身在开发过程中运行时没有问题(rails crails s等。)

另请注意,gem list将rake(0.8.7)列为本地宝石。

如果我更改gemfile以请求rake版本0.9.2然后更新捆绑包(捆绑更新rake),我会得到相同的错误,除了它们现在引用rake版本0.9.2而不是0.8.7。 / p>

4 个答案:

答案 0 :(得分:5)

安装新的ruby版本后,您需要运行rbenv rehash。接下来,运行gem install rake,然后第二次运行rbenv rehash,因为rake会安装二进制文件。

答案 1 :(得分:1)

根本原因是gem文件,仍然引用ruby-debug。已将其更改为ruby-debug19,执行了bundle installbundle update,现在rake工作正常。无法解释为什么应用程序在引用ruby-debug时运行良好。

答案 2 :(得分:1)

我遇到了同样的问题。我的问题的原因是除了在rbenv中的shims目录之外,还在/usr/bin/local/中找到了Rake。要检查这是否是问题,请首先卸载rake gem uninstall rake,然后运行which rake。如果您返回的路径与/Users/username/.rbenv/shims/rake不同,则只需使用sudo rm /path/to/file删除该二进制文件。

请注意,至少在我的情况下,which gem使用的是由rbenv管理的shimed可执行文件,而rake则不是。所以一切正常,直到我试图从终端调用rake command

答案 3 :(得分:0)

您应该尝试使用chruby而不是rbenv。与rbenv不同,chruby不依赖于垫片;所以不必再一直运行rehash。相反,chruby仅修改PATHGEM_HOMEGEM_PATH