Ruby on rails Rake 0.8.7,Rake中止!未初始化的常量Rake::DSL

Ruby on rails Rake 0.8.7,Rake中止!未初始化的常量Rake::DSL,ruby-on-rails,Ruby On Rails,我在我的Rails项目中使用了“rake 0.8.7”,但当我仍然尝试rake路由或bundle exec rake路由时,我仍然得到 rake aborted! uninitialized constant Rake::DSL 如果我尝试将推荐的require'rake/dsl\u definition'放在我的Rakefile中,它会给我 rake aborted! no such file to load -- rake/dsl_definition 所以,我被困在如何解决这个问题上。

我在我的Rails项目中使用了“rake 0.8.7”,但当我仍然尝试
rake路由
bundle exec rake路由
时,我仍然得到

rake aborted!
uninitialized constant Rake::DSL
如果我尝试将推荐的
require'rake/dsl\u definition'
放在我的Rakefile中,它会给我

rake aborted!
no such file to load -- rake/dsl_definition

所以,我被困在如何解决这个问题上。我无法运行任何rake命令…

该错误听起来像是您在应用程序中使用了需要比0.8.7更新版本的rake。相信Rake::DSL只出现在Rake0.9.0中

最新版本的Rails宣传自己使用了0.8.7版本的rake。也许这是错的。更可能的情况是,您在项目中使用了其他需要更新rake的gem

为什么以及如何在项目中使用rake 0.8.7而不是最近的版本?除非您在gemfile中锁定了rake 0.8.7(或者正在使用坚持0.8.7的其他gem),否则您应该能够运行
bundle update rake
升级到rake的最新版本

如您所述,如果您安装了多个版本的rake,您可能必须运行
bundle exec rake…
。但是在您的项目中,
bundle exec rake
仍然可以得到0.8.7,因为无论出于什么原因,您的Gemfile.lock当前设置为rake的版本——但是您的项目使用的是需要更新版本的东西