3 回答
TA贡献1848条经验 获得超6个赞
运行0.9.0.beta.4版本的Rake时,我遇到了相同的异常。好像新Rake::DSL的未正确加载。
因此,我在Rakefile中添加了以下代码:
require 'rake'
# Rake Fix Code start
# NOTE: change 'Anelis' to your app's module name (see config/application.rb)
module ::Anelis
class Application
include Rake::DSL
end
end
module ::RakeFileUtils
extend Rake::FileUtilsExt
end
# Rake Fix Code end
MyApp::Application.load_tasks
这样,我可以再次运行Rake任务。
我知道这不是一个很好的解决方案。但是,如果您必须使用--preRake 的版本,则可以使用此快速技巧。
TA贡献1842条经验 获得超12个赞
Rake 0.9.0中存在问题。您需要暂时降级Rake以避免它:
运行:(gem uninstall rake -v 0.9添加,sudo除非您使用rvm)
添加到您的Gemfile中: gem 'rake', '~> 0.8.7'
然后运行: bundle update
您可以跳过第一步,但随后必须rake使用来运行bundle exec,例如:
bundle exec rake db:migrate
否则,您将收到以下错误。
rake aborted!
You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
更新资料
正如Alex Chaffee在评论Pablo Cantero的评论中注意到的那样,如果仍然看到问题,则可能需要执行以下操作来卸载Rake。
rvm use @global && gem uninstall rake -v 0.9.0
rvm use @ && gem uninstall rake -v 0.9.0
还可以尝试Duke的答案中建议的解决方案。
TA贡献1906条经验 获得超10个赞
注意:这仅在Rails 3.0.8中修复
新版本的Rake不再将其DSL命令(任务,文件,desc,导入等)放在Object名称空间的根中(将它们放在Object中意味着每个对象都有一个任务命令,不是很好)。通过将混入Rake::DSL module需要命令的任何模块中,可以使用命令。
在Ruby on Rails更新为可以与Rake 0.9.x一起使用之前,请将以下内容放在项目“ Rakefile”中的“ require rake”之后和调用之前Application.load_tasks:
class Rails::Application
include Rake::DSL if defined?(Rake::DSL)
end
- 3 回答
- 0 关注
- 748 浏览
添加回答
举报