只是为了帮助其他遇到这种麻烦的人。
如果你像我一样,那么你的问题是 Rails 的当前版本是 4,而你想使用像 3.0.7 这样的旧版本
如果你安装了新的rails来学习它,比如说,你使用的教程是针对3.0.x版本的rails,或者你的工作需要使用旧版本的rails..那么你就可以进入这个洞。
就我而言,我收到了一个 3.0.7 Rails 项目,并被告知要学习 Rails 并对这段代码进行一些增强。
所以,我刚刚开始学习 Rails 并遵循教程,直到在执行“rake db:migrate”时出现此错误
rake aborted!
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
/Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'
发生这种情况是因为我使用的是旧版本的rails..在我的例子中是3.0.7
如果你像我一样运行“bundle show”,你可能会看到你正在使用 rake 版本 10.0.0 或类似的东西......并且你需要运行 rake 0.9.2 ...这就是问题来自..
我的解决方案是(a)将 gem 添加到我的 gemfile 中并(b)添加到捆绑安装中
所以,在我的 gemfile 中我添加了:
gem 'rake', '0.9.2'
然后做了一个
'bundle install'
收到这条消息:
You have requested:
rake = 0.9.2
The bundle currently has rake locked at 10.1.0.
Try running `bundle update rake`
所以我就这么做了...
bundle update rake.
一切都很顺利。
然后当我执行“rake db:migrate”时它就起作用了。
希望这对某人有帮助。
维达。
PS:如果你像我一样是 Rails 新手,并且继承了旧的 Rails 应用程序,那么看在上帝的份上,永远不要运行“捆绑更新”,否则你将进入一个痛苦的世界。该命令会将您的所有 gem 更新到最新版本,最终会遇到一系列不兼容的问题。唯一的出路是如果你足够幸运安装了 git 并且可以执行“git checkout”返回......