Estoy teniendo un problema realmente frustrante: Rake está siendo tonto.
Así es como surge el problema:
$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text
Ambos funcionan bien, pero cuando hago esto,
$ rake db:migrate
Obtuve el siguiente error.
(in /home/mikhail/test_app)
rake aborted!
uninitialized constant Rake::DSL
/usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `each'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `initialize_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
/home/mikhail/test_app/Rakefile:7:in `<top (required)>'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/bin/rake:31:in `<main>'
He buscado en Internet errores similares / iguales, y la gente los ha tenido. ¡Simplemente nadie parece resolver el problema!
¿Cómo soluciono este problema?
ruby-on-rails
rake
HRÓÐÓLFR
fuente
fuente
bundle update rake
primero. Luego lo comprobé conbundle show rake
. Debería decir 0.8.7. Entoncesrake db:migrate
.gem "rake", "!= 0.9.0"
. Esto evita la versión 0.9.0 rota, pero se actualizará a una más nueva una vez que se publique una versión más reciente (eliminar esto más adelante no dañará, pero mantenerlo tampoco debería dañar).heroku rake db:migrate
y esto parece solucionarlo. recuerde agregar y confirmar estos cambios en git antes de continuar;)sudo gem install rake
para asegurarme de que larake
versión que estaba llamando desde la línea de comandos no era 0.8.7.Investigué un poco justo después de mi respuesta anterior (lo siento, debo hacerlo antes).
Todos los problemas se resuelven con Rake gem 0.9.2. Seguí estos pasos:
gem install rake -v=0.9.2
(tenía la gema 0.9.1)gem uninstall rake -v=0.9.1
bundle update
entonces el
db:migrate
mostró una advertencia,WARNING: Global access to Rake DSL methods is deprecated. Please....
Se resolvió agregando lo siguiente al archivo Rake.
Omití la
module ::RakeFileUtils extend Rake::FileUtilsExtend
opción sugerida por @databyte.¡Significa que la gema Rake 0.9.2 funciona bien!
fuente
RakeFile
debería ser antesrequire 'rake'
- me sorprendió :)gem uninstall rake -v=0.9.2
2)gem install rake -v=0.9.2
Revisando el Capítulo 2 de Railstutorial (demo_app) y me encontré con este problema. Intenté todas las otras respuestas enumeradas aquí, pero no pude hacerlo funcionar hasta que hice esto:
Ponga esto en su Rakefile anterior requiere 'rake':
a través de cómo solucionar el problema constante Rake :: DSL sin inicializar en Heroku?
También volví a comprometer y envié todos los archivos a Github y Heroku.
fuente
Todo lo que necesitaba hacer era usar:
Ya tenía la versión 0.9.2, solo necesitaba instalar.
fuente
Vuelva a instalar la gema de rastrillo y debería funcionar bien:
Si no, especifique la versión '0.8.7' en su Gemfile.
fuente
Si no usa Bundler:
Luego elija desinstalar 0.9.0.
fuente
Si, como yo, estás atrapado en el rastrillo 0.8.7 y estás utilizando Rails 3.2.x, entonces railties agrega un requisito para Rake :: DSL
Para resolver esto, en la parte superior de tu Rakefile debes agregar:
fuente
Resolví el mismo problema con los siguientes pasos:
En Gemfile:
Luego ejecutó esto en la consola:
Luego agregó las siguientes líneas a Rakefile:
fuente
Rails 3.1.rc1 ha sido actualizado. Para sus propios Rakefiles, puede agregar esto antes de la llamada a load_tasks.
https://gist.github.com/4cd2bbe68f98f2f0249f
ACTUALIZACIÓN: También noté que ya está respondida aquí: método no definido 'tarea' usando Rake 0.9.0
fuente
Tuve el mismo problema y tuve que usar la gema rake 0.8.7 en lugar de 0.9.0.
fuente
Soy un usuario de Windows XP y tuve el mismo problema.
Ingresé la gema "rastrillo", "0.8.7" en el archivo de gemas, y luego escribí lo siguiente desde la ventana de comandos.
Esto solucionó mi problema.
fuente
bundle install --path=vendor/bundle
bundle exec rake db:migrate
Para iniciar el servidor escriba
bundle exec rails s
. Use bundle exec y se asegurará de usar las gemas correctas (versión requerida) para su proyecto. También le recomiendo que añadirvendor/bundle
que.gitignore
si se utilizagit
y hacer alias parabundle exec
. Si usaszsh
puedes seguir este enfoquefuente
Igual que Branstar arriba, ¡gracias Branstar!
Seguí las instrucciones en Running Rails 3 en Windows .
Todo funcionó hasta la parte "rake db: migrate" que me dio el mismo resultado que la publicación original.
Corrí:
Corrí de nuevo:
Luego pude iniciar el servidor Ruby on Rails y tuve todo en su lugar.
Gracias de nuevo Branstar :-)
fuente
Siento por ti (mikhailvs), es realmente frustrante. Me he estado volviendo loco por casi un día completo. Incluso desinstalé Ruby y todos sus archivos dependientes y apagué mi PC, pero aún tengo el mismo problema.
Lo que obtuve del mensaje de error es el problema con Rake 0.9.2. Parece que no estaba completamente instalado. Entonces tuve que reinstalar
gem install rake -v=0.9.2
No estaba seguro de tener el rastrillo –v0.9.1 instalado. Entonces, para asegurarme de que estoy seguro, traté de eliminar esa versión anterior con
gem uninstall rake -v=0.9.1
. Pero me mostró el mensaje de errorOK, entonces revisé todos los directorios de Rake en mi PC, y descubrí que solo tenía Rake 0.9.2. Luego, para comprobar si todo salió bien, migré con
rake db:migrate
. Y funcionó :)Creo que no tenía Rake 0.9.1 porque instalé Ruby de forma limpia ( rubyinstaller-1.9.2-p180 - en mi sistema Windows 7) y todas las gemas también. Mientras tanto, Rake 0.9.2 no estaba completamente instalado.
fuente
La desinstalación con "gem uninstall rake" funcionó para mí, tenía 2 versiones instaladas, así que bromeé con una reinstalación limpia.
"rake db: create" , para asegurarse de que la base de datos existe y luego "rake db: migrate" para cerrar el trato.
fuente
Tuve el mismo problema al usar Rake 0.9.2.2. Resolví este problema usando el paquete exec.
fuente
Para Rails 2.3, la edición
lib/tasks/rspec.rake
como en este commit funcionó para mí:https://github.com/dchelimsky/rspec-rails/pull/11/files
fuente
Instale rake 0.8.7 y desinstale 0.9.2.2
Ahora usa
Creo que esto te ayudará ;)
fuente
correr
esto funciona para mi.
fuente