使用Rake 0.9.0的未定义方法“任务”

我刚刚将Rake更新到最新版本(0.9.0.beta.4),该rake命令最终显示以下错误消息:


rake aborted!

undefined method `task' for #<Anelis::Application:0x9223b6c>

这是跟踪:


undefined method `task' for #<Anelis::Application:0x97ef80c>

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:139:in `load_tasks'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'

/home/amokrane/Documents/prog/web/learning_rails/anelis/Rakefile:7:in `load_string'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `eval'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `load_string'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:16:in `load_rakefile'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:495:in `raw_load_rakefile'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:78:in `block in load_rakefile'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:77:in `load_rakefile'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:61:in `block in run'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:59:in `run'

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/bin/rake:31:in `<top (required)>'

/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `load'

/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `<main>'

有人遇到过同样的问题吗?有什么可能是错的吗?请注意,我正在运行Rails 3.0.3,

我该如何解决这个问题?


动漫人物
浏览 700回答 3
3回答

慕勒3428872

运行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&nbsp; class Application&nbsp; &nbsp; include Rake::DSL&nbsp; endendmodule ::RakeFileUtils&nbsp; extend Rake::FileUtilsExtend# Rake Fix Code endMyApp::Application.load_tasks这样,我可以再次运行Rake任务。我知道这不是一个很好的解决方案。但是,如果您必须使用--preRake 的版本,则可以使用此快速技巧。

红颜莎娜

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.0rvm use @       && gem uninstall rake -v 0.9.0还可以尝试Duke的答案中建议的解决方案。

隔江千里

注意:这仅在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&nbsp; include Rake::DSL if defined?(Rake::DSL)end
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby