Acabei de atualizar o Rake para a versão mais recente ( 0.9.0.beta.4
) e o rake
comando termina com a seguinte mensagem de erro:
rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>
Aqui está o rastreio:
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>'
Alguém experimentou o mesmo problema? O que poderia estar errado? Observe que estou executando Rails 3.0.3
, você também pode estar interessado no conteúdo do meu 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"
Como posso resolver este problema?
ruby-on-rails-3
rake
Amokrane Chentir
fonte
fonte
Respostas:
Eu tive a mesma exceção ao executar a versão 0.9.0.beta.4 do Rake. Parece que o novo
Rake::DSL
não está carregado corretamente.Então eu adicionei o seguinte código ao meu Rakefile:
Dessa forma, eu pude executar minhas tarefas Rake novamente.
Eu sei que essa não é uma solução elegante. Mas se você precisar usar a
--pre
versão do Rake, pode ser bom usar esse hack rápido.fonte
require 'rake'
eMyApp::Application.load_tasks
Como explicado na resposta de mordaroso , há um problema no Rake 0.9.0. É necessário fazer o downgrade temporário do Rake para evitá-lo:
executar:
gem uninstall rake -v 0.9
(adicione asudo
menos que você uservm
)adicione ao seu Gemfile:
gem 'rake', '~> 0.8.7'
e então execute:
bundle update
Você pode pular a primeira etapa, mas precisará executar
rake
usandobundle exec
, por exemplo:Caso contrário, você receberá o seguinte erro.
Atualizar
Como Alex Chaffee notou em um comentário para a resposta de Pablo Cantero , talvez seja necessário fazer o seguinte para desinstalar o Rake, se o problema persistir.
Tente também a solução sugerida na resposta de Duke .
fonte
bundle exec rake
para usar a versão empacotada em funcionamento.bundle exec rake
é necessário apenas se o rake-0.9 não tiver sido desinstalado. Nesse caso, é exibida uma mensagem de erro #rake aborted! You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
gem 'rake', '~> 0.8.7'
Nota: Isso foi corrigido no Rails 3.0.8
A nova versão do Rake não coloca mais seus comandos DSL (tarefa, arquivo, desc, importação, etc.) na raiz do namespace Object (colocá-los em Object significa que todo objeto tem um comando de tarefa, não muito agradável. comandos estão disponíveis misturando em
Rake::DSL module
qualquer módulo que precise dos comandos.Até que o Ruby on Rails seja atualizado para funcionar com o Rake 0.9.x, coloque o seguinte no seu projeto Rakefile após "exigir rake" e antes da chamada para
Application.load_tasks
:fonte
Eu criei um problema para o rails_admin sobre esse mesmo erro.
A resposta :
É um problema no Rake (0.9.0), foi anunciado pelo DHH no Twitter.
fonte
gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
(a segunda instalação é recuperar o executável).rvm use @global && gem uninstall rake --version 0.9.0 && rvm use @ && gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
Isso foi corrigido no Ruby on Rails 3.0.8.rc1, que deve ser lançado em alguns dias.
fonte
O Rake 0.9.1 acaba de ser lançado, revertendo a alteração que causou esse erro, mas adicionando um aviso de descontinuação: https://github.com/jimweirich/rake/commit/44aec3ceac085740bce0c385bccd65fc4d1d911c
fonte
Eu uso o rvm, mas a desinstalação não me ajuda. Então, eu removo manualmente todos os arquivos 0,9 do
.rvm/gems/ruby@global
diretório e tudo se torna como antes!fonte
sem a necessidade de desinstalar o Rake 0.9.x, adicione
ao seu Gemfile e apenas digite
fonte