Amo*_*tir 132 rake ruby-on-rails-3
我刚刚将Rake更新到最新版本(0.9.0.beta.4),该rake命令最终出现以下错误消息:
rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>
Run Code Online (Sandbox Code Playgroud)
这是跟踪:
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>'
Run Code Online (Sandbox Code Playgroud)
有人经历过同样的问题吗?什么可能是错的?请注意,我正在运行Rails 3.0.3,您可能也对我的Gemfile的内容感兴趣:
source 'http://rubygems.org'
gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'mysql2'
gem 'legacy_data'
gem 'resources_controller', :git => 'git://github.com/ianwhite/resources_controller'
gem 'will_paginate', '3.0.pre' # pagination
gem 'jquery-rails', '>= 0.2.6'
gem "rmagick" # sudo aptitude install libmagick9-dev
gem "paperclip", "~> 2.3"
gem "nested_form", :git => "git://github.com/madebydna/nested_form.git"
gem "meta_search"
gem "hirb"
gem "devise"
gem "rails_admin", :git => "git://github.com/sferik/rails_admin.git"
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
And*_*rei 158
正如mordaroso的回答中所解释的那样,Rake 0.9.0存在问题.您需要暂时降级Rake以避免它:
运行:( 除非你使用gem uninstall rake -v 0.9添加)sudorvm
添加到您的Gemfile: gem 'rake', '~> 0.8.7'
然后运行: bundle update
你可以跳过第一步,但你必须运行rake使用bundle exec,例如:
bundle exec rake db:migrate
Run Code Online (Sandbox Code Playgroud)
否则您会收到以下错误.
rake aborted!
You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
Run Code Online (Sandbox Code Playgroud)
正如Alex Chaffee在评论Pablo Cantero的回答中注意到的那样,如果你仍然看到问题,你可能需要执行以下操作来卸载Rake
rvm use @global && gem uninstall rake -v 0.9.0
rvm use @ && gem uninstall rake -v 0.9.0
Run Code Online (Sandbox Code Playgroud)
也尝试杜克答案中建议的解决方案.
mor*_*oso 119
运行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
Run Code Online (Sandbox Code Playgroud)
这样我就可以再次运行我的Rake任务.
我知道这不是一个优雅的解决方案.但是如果你必须使用--preRake版本,那么使用这个快速黑客可能是正确的.
Duk*_*uke 39
注意:这只是在Rails 3.0.8中修复的
Rake的新版本不再将其DSL命令(任务,文件,desc,导入等)放在Object命名空间的根目录中(将它们放在Object中意味着每个对象都有一个任务命令,不是很好.DSL可以通过将命令混合Rake::DSL module到需要命令的任何模块中来获得命令.
在Ruby on Rails更新以使用Rake 0.9.x之前,在"require rake"之后和调用之前将以下内容放在项目Rakefile中Application.load_tasks:
class Rails::Application
include Rake::DSL if defined?(Rake::DSL)
end
Run Code Online (Sandbox Code Playgroud)
Pab*_*ero 16
我为rails_admin创建了一个关于同样错误的问题.
答案是:
这是一般的Rails问题:http://twitter.com/dhh/status/71966528744071169
应该会很快发布3.0.8版本.同时,您可以将以下行添加到Gemfile:
宝石'耙','〜> 0.8.7'
这是Rake(0.9.0)中的一个问题,它是由DHH在Twitter上宣布的.
昨天发布的Rake 0.9打破了Rails(和其他人).当我们等待修复时,你需要Gemfile中的gem'rake','0.8.7'.
| 归档时间: |
|
| 查看次数: |
33359 次 |
| 最近记录: |