Acabo de actualizar Rake a la última versión ( 0.9.0.beta.4
) y el rake
comando termina con el siguiente mensaje de error:
rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>
Aquí está el rastro:
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>'
¿Alguien experimentó el mismo problema? Qué podría estar mal? Tenga en cuenta que estoy ejecutando Rails 3.0.3
, también puede estar interesado en el contenido de mi 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 puedo solucionar este problema?
ruby-on-rails-3
rake
Amokrane Chentir
fuente
fuente
Respuestas:
Tuve la misma excepción al ejecutar la versión 0.9.0.beta.4 de Rake. Parece que el nuevo
Rake::DSL
no está cargado correctamente.Entonces agregué el siguiente código a mi Rakefile:
De esa manera pude ejecutar mis tareas de Rake nuevamente.
Sé que esta no es una solución elegante. Pero si tiene que usar la
--pre
versión de Rake, podría estar bien usar este truco rápido.fuente
require 'rake'
yMyApp::Application.load_tasks
Como se explica en la respuesta de mordaroso , hay un problema en Rake 0.9.0. Necesitas degradar temporalmente Rake para evitarlo:
ejecutar:
gem uninstall rake -v 0.9
(agregar asudo
menos que uservm
)agregar a su Gemfile:
gem 'rake', '~> 0.8.7'
y luego ejecuta:
bundle update
Puede omitir el primer paso, pero luego debe ejecutar
rake
usandobundle exec
, por ejemplo:De lo contrario, obtendrá el siguiente error.
Actualizar
Como Alex Chaffee notó en un comentario para la respuesta de Pablo Cantero , es posible que deba hacer lo siguiente para desinstalar Rake si aún ve el problema
Pruebe también la solución sugerida en la respuesta de Duke .
fuente
bundle exec rake
para usar la versión combinada de trabajo.bundle exec rake
solo es necesario si no se desinstaló rake-0.9. En este caso, uno recibe un mensaje de errorrake 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: Esto se solucionó en Rails 3.0.8
La nueva versión de Rake ya no coloca sus comandos DSL (tarea, archivo, desc, importación, etc.) en la raíz del espacio de nombres de Objeto (colocarlos en Objeto significa que cada objeto tiene un comando de tarea, no muy agradable. El DSL los comandos están disponibles al mezclarlos en
Rake::DSL module
cualquier módulo que los necesite.Hasta que Ruby on Rails se actualice para que funcione con Rake 0.9.x, coloque lo siguiente en su proyecto Rakefile después de "require rake" y antes de la llamada a
Application.load_tasks
:fuente
He creado un problema para rails_admin sobre este mismo error.
La respuesta :
Es un problema en Rake (0.9.0), fue anunciado por DHH en Twitter.
fuente
gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
(la segunda instalación es recuperar el ejecutable).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
Esto se ha solucionado en Ruby on Rails 3.0.8.rc1, que debería lanzarse en unos días.
fuente
Se acaba de lanzar Rake 0.9.1 que revierte el cambio que causó este error pero agrega una advertencia de desaprobación: https://github.com/jimweirich/rake/commit/44aec3ceac085740bce0c385bccd65fc4d1d911c
fuente
Uso rvm, pero la desinstalación no me ayuda. ¡Así que elimino manualmente todos los archivos 0.9 del
.rvm/gems/ruby@global
directorio y todo se vuelve como antes!fuente
sin la necesidad de desinstalar Rake 0.9.x, agregue
a su Gemfile y simplemente escriba
fuente