ruby-on-rails - tutorial - ruby on rails course
Problemas de Ruby on Rails y Rake: Rake constante sin inicializar:: DSL (19)
Estoy teniendo un problema realmente frustrante: Rake es ser 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 o similares, y la gente los ha tenido. ¡Simplemente nadie parece resolver el problema!
¿Cómo soluciono este problema?
- Ve a la ruta de tu proyecto.
- Escriba
bundle install --path=vendor/bundle
- Escriba
bundle exec rake db:migrate
Para iniciar el tipo de servidor de bundle exec rails s
. Use bundle exec y se asegurará de usar gemas correctas (versión requerida) para su proyecto. También le recomendaría que agregue vendor/bundle
a .gitignore
si usa git
y .gitignore
alias para el bundle exec
. Si usas zsh
puedes seguir este enfoque.
Desinstalar con "desinstalación de gema rake" funcionó para mí, tenía 2 versiones instaladas, así que simplemente hice una reinstalación limpia.
"rake db: create" , para asegurarse de que la base de datos existe y luego "rake db: migrate" para sellar el trato.
Hice una investigación 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:
- Instalé el
gem install rake -v=0.9.2
(tuve la gema 0.9.1) - eliminó el 0.9.1 con la
gem uninstall rake -v=0.9.1
- actualizado con la
bundle update
luego
db:migrate
mostró una advertencia,WARNING: Global access to Rake DSL methods is deprecated. Please....
WARNING: Global access to Rake DSL methods is deprecated. Please....
Se resolvió agregando lo siguiente al archivo Rake.
module ::YourApplicationName class Application include Rake::DSL end end
Omití el
module ::RakeFileUtils extend Rake::FileUtilsExtend
opciónmodule ::RakeFileUtils extend Rake::FileUtilsExtend
sugerida por @databyte.
Esto significa que la gema Rake 0.9.2 funciona bien!
Igual que Branstar arriba - ¡Gracias Branstar!
- SO: Windows Vista
- Nivel: Completamente nuevo en Ruby on Rails.
- Ya tuve Ruby 1.9.2 instalado
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í:
gem install rake
Corrí de nuevo:
rake db:migrate
Luego pude iniciar el servidor Ruby on Rails y tuve todo en su lugar.
Gracias de nuevo Branstar :-)
Instalar rake 0.8.7 y desinstalar 0.9.2.2
$ gem install rake -v 0.8.7
$ gem uninstall rake -v 0.9.2.2
Ahora usa
$ bundle exec rake db:migrate
Creo que esto te ayudará ;)
Lo 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 todavía 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. Así que tuve que reinstalar gem install rake -v=0.9.2
No estaba seguro de si tengo rake –v0.9.1 instalado. Así que para asegurarme de que estoy seguro, intenté eliminar esa versión anterior con gem uninstall rake -v=0.9.1
. Pero me ha mostrado el mensaje de error.
ERROR: While executing gem ... (Gem::InstallError)
cannot uninstall, check `gem list -d rake`
De acuerdo, 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 ( 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.
Para Rails 2.3, editar lib/tasks/rspec.rake
como en este commit funcionó para mí:
Pasando por el Capítulo 2 de Railstutorial (demo_app) y encontré este problema. Intenté todas las otras respuestas enumeradas aquí, pero no pude hacer que funcionara hasta que hice esto:
Pon esto en tu Rakefile de arriba requiere ''rake'':
require ''rake/dsl_definition''
a través de ¿Cómo solucionar el problema de Rake :: DSL constante sin inicializar en Heroku?
También volví a comprometerme y envié todos los archivos a Github y Heroku.
Rails 3.1.rc1 ha sido actualizado. Para sus propios Rakefiles, puede agregar esto antes de la llamada a load_tasks.
module ::YourApplicationName
class Application
include Rake::DSL
end
end
module ::RakeFileUtils
extend Rake::FileUtilsExt
end
https://gist.github.com/4cd2bbe68f98f2f0249f
ACTUALIZACIÓN: También noté que aquí también se responde: método ''tarea'' no definido usando Rake 0.9.0
Resolví el mismo problema con los siguientes pasos:
En Gemfile:
gem ''rake'', ''0.9.2''
Luego corrió esto en la consola:
sudo bundle update rake
Luego agregó las siguientes líneas a Rakefile:
require ''rake/dsl_definition''
include Rake::DSL
Si no está utilizando Bundler:
sudo gem install rake -v 0.8.7
sudo gem uninstall rake
A continuación, elija desinstalar 0.9.0.
Si, como yo, estás atrapado en el rake 0.8.7, y estás usando Rails 3.2.x entonces railties agrega un requisito para Rake :: DSL
Para resolver esto, en la parte superior de tu archivo de Rake debes agregar:
module Rake
module DSL
end
end
Soy un usuario de Windows XP y tuve el mismo problema.
Ingresé gema "rake", "0.8.7" en el archivo gem, y luego escribí lo siguiente desde la ventana de comando.
bundle update rake
Esto solucionó mi problema.
Todo lo que necesitaba hacer era usar:
gem install rake
Ya tenía la versión 0.9.2, solo necesitaba instalar.
Tuve el mismo problema usando Rake 0.9.2.2. Resolví este problema usando el paquete exec.
Tuve el mismo problema y tuve que usar el rake 0.8.7 gema en lugar de 0.9.0.
Un tweet de DHH anterior. Rake .9.0 rompe rieles y varias otras cosas, necesitas:
gem "rake", "0.8.7"
en tu Gemfile.
Vuelva a instalar la gema de rastrillo y debería funcionar bien:
gem uninstall rake -v=0.9.2
gem install rake -v=0.9.2
Si no, especifique la versión ''0.8.7'' en su Gemfile.
correr
bundle exec rake db:migrate
esto funciona para mi.