references rails migrations create commands column ruby-on-rails-3 rake

ruby on rails 3 - rails - Método no definido ''tarea'' usando Rake 0.9.0



rails db:migrate (8)

Acabo de actualizar Rake a la última versión ( 0.9.0.beta.4 ) y el comando rake 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 podría 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?


Como se explica en la respuesta de Mordaroso , hay un problema en Rake 0.9.0. Necesitarás degradar temporalmente Rake para evitarlo:

  1. ejecutar: gem uninstall rake -v 0.9 (agregar sudo menos que use rvm )

  2. agregue a su archivo de gem ''rake'', ''~> 0.8.7'' : gem ''rake'', ''~> 0.8.7''

  3. y luego ejecutar: bundle update

Puede omitir el primer paso, pero luego debe ejecutar rake utilizando bundle exec , por ejemplo:

bundle exec rake db:migrate

De lo contrario, obtendrá el siguiente error.

rake aborted! You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.

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

rvm use @global && gem uninstall rake -v 0.9.0 rvm use @ && gem uninstall rake -v 0.9.0

Pruebe también la solución sugerida en la respuesta de Duke .


Creé un problema para rails_admin sobre este mismo error.

La respuesta :

Este es un problema general de Rails: http://twitter.com/dhh/status/71966528744071169

Debería haber una versión 3.0.8 pronto que lo arregle. Mientras tanto, puede agregar la siguiente línea a su Gemfile:

gema ''rastrillo'', ''~> 0.8.7''

Es un problema en Rake (0.9.0), fue http://twitter.com/dhh/status/71966528744071169 por DHH en Twitter.

Rake 0.9, que fue lanzado ayer, rompió Rails (y otros). Mientras esperamos una solución, querrás ''rastrillo'' de gema, ''0.8.7'' en tu Gemfile.




Tuve la misma excepción cuando ejecuté la versión 0.9.0.beta.4 de Rake. Parece que el nuevo Rake::DSL no está cargado correctamente.

Así que agregué el siguiente código a mi 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

De esa forma pude volver a ejecutar mis tareas de Rake.

Sé que esta no es una solución elegante. Pero si tiene que usar la versión --pre de Rake, podría estar bien utilizar este truco rápido.


Yo uso rvm, pero la desinstalación no me ayuda. ¡Así que .rvm/gems/ruby@global manualmente todos los archivos 0.9 del directorio .rvm/gems/ruby@global y todo se vuelve como antes!


sin la necesidad de desinstalar Rake 0.9.x, agregue

gema ''rastrillo'', ''~> 0.8.7''

a su Gemfile y simplemente escriba

paquete ejecutivo rake -T


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 del objeto (colocarlos en Object significa que cada objeto tiene un comando de tarea, no muy agradable. los comandos están disponibles mezclando en el Rake::DSL module en cualquier módulo que necesite los comandos.

Hasta que Ruby on Rails se actualice para funcionar con Rake 0.9.x, ponga lo siguiente en su proyecto Rakefile después de "require rake" y antes de llamar a Application.load_tasks :

class Rails::Application include Rake::DSL if defined?(Rake::DSL) end