ruby-on-rails-3 rake railstutorial.org

ruby on rails 3 - El acceso global a los métodos DSL Rake está en desuso



ruby-on-rails-3 railstutorial.org (5)

Estoy trabajando en el libro tutorial de Ruby on Rails 3 y escribí lo siguiente en la línea de comando:

rake db:migrate

que produjo la siguiente advertencia.

WARNING: Global access to Rake DSL methods is deprecated. Please Include ... Rake::DSL into classes and modules which use the Rake DSL methods. WARNING: DSL method DemoApp::Application#task called at /Users/imac/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks''

No estoy seguro de qué hacer al respecto o cómo trabajar con él. No conozco ningún otro comando para Rake.

¿Como puedo solucionar este problema?


Agregar include Rake::DSL al Rakefile antes de que se llamaran las aplicaciones load_tasks también funcionó para mí.

Entonces, en el caso del usuario anterior antes de DemoApp::Application.load_tasks en el Rakefile.


Encontré esto en la pregunta de Desbordamiento de pila Ruby on Rails and Rake: rasante no inicializado :: DSL . Se refiere a un tweet @DHH.

Pon lo siguiente en tu Gemfile

gem "rake", "0.8.7"

Puede ver algo así como

rake aborted! You have already activated Rake 0.9.1 ...

Todavía tenía una copia de Rake 0.9.1 en mi directorio, así que la eliminé.

Puede "eliminar" Rake 0.9.1 ejecutando el siguiente comando:

gem uninstall rake -v=0.9.1

Si tiene múltiples versiones de la gema instaladas, se le pedirá que elija una versión.

Después de limpiar 0.9.1, corrí

bundle update rake

y finalmente pude crear mis archivos de base de datos. Estaba usando rake db:create , pero debería funcionar para rake db:migrate también.

Espero que ayude.


Estaba teniendo el mismo problema en Windows con el instalador. Ruby 1.9.2 y Rails 3.0.9. Aquí esta lo que hice:

bundle update rake bundle show rake

Después de hacer eso, estaba ejecutando el rastrillo 0.9.2.

Luego actualicé el Rakefile en la carpeta raíz de la aplicación de la siguiente manera:

require File.expand_path(''../config/application'', __FILE__) require ''rake'' # If you named your application something other than SampleApp, change that below module ::SampleApp class Application include Rake::DSL end end module ::RakeFileUtils extend Rake::FileUtilsExt end SampleApp::Application.load_tasks

Como se indica en el comentario, asegúrese de que el nombre de su aplicación sea el correcto en las dos líneas correspondientes de arriba.


Si está viendo esto en versiones posteriores de Rails (como 3. +), también puede verificar si su entorno está limpio utilizando RVM http://beginrescueend.com/ y creando un ruby ​​y gemset específico para sus proyectos.

Utilice un archivo .rvmrc por proyecto, esto le garantizará que no obtendrá gemas del sistema más antiguas en sus proyectos. Lo cual me ha mordido antes.

Esto evita tener que buscar con Rakefiles generados y cosas por el estilo.


bundle exec rake db: migrate resolverá los problemas de la versión de ruby