rails installing instalar how deploy como and ruby-on-rails ruby-on-rails-3 heroku rake

ruby-on-rails - installing - rails and heroku



¿Cómo arreglar el problema Rake:: DSL constante no inicializado en Heroku? (5)

Recibo errores similares a los in these questions , excepto que los míos están ocurriendo en Heroku :

2011-05-30T09:03:29+00:00 heroku[worker.1]: Starting process with command: `rake jobs:work` 2011-05-30T09:03:30+00:00 app[worker.1]: (in /app) 2011-05-30T09:03:30+00:00 heroku[worker.1]: State changed from starting to up 2011-05-30T09:03:33+00:00 app[worker.1]: rake aborted! 2011-05-30T09:03:33+00:00 app[worker.1]: uninitialized constant Rake::DSL 2011-05-30T09:03:33+00:00 app[worker.1]: /app/.bundle/gems/ruby/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>''

La respuesta en esas preguntas parece ser especificar gem ''rake'', ''0.8.7'' porque la versión 0.9 causa el problema.

Cuando trato de agregar gem ''rake'', ''0.8.7'' a mi gemfile y presiono a Heroku obtengo este error:

Unresolved dependencies detected; Installing... You have modified your Gemfile in development but did not check the resulting snapshot (Gemfile.lock) into version control You have added to the Gemfile: * rake (= 0.8.7) FAILED: http://devcenter.heroku.com/articles/bundler ! Heroku push rejected, failed to install gems via Bundler error: hooks/pre-receive exited with error code 1 To [email protected]:my_app.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to ''[email protected]:my_app.git''

Mi gemfile normalmente funciona bien en Heroku. ¿Que debería hacer?


Cada vez que cambie su Gemfile, debe bundle install para actualizar su archivo de bloqueo (Gemfile.lock). El error que está recibiendo al presionar no es específico para cambiar la versión del rake.

bundle install git commit -a -m "update lockfile" git push heroku master

Tenga en cuenta el mensaje de error que recibió:

Ha modificado su Gemfile en desarrollo pero no ha verificado la instantánea resultante (Gemfile.lock) en el control de versiones


Lo resolví, finalmente, después de mucho alboroto. La versión corta de lo que hice, perdiendo muchos experimentos, fue esta:

1) cambie el Gemfile para especificar Rake 0.8.7

#in Gemfile gem "rake", "0.8.7"

2) Extraiga un truco que había agregado previamente a Rakefile basado en la pregunta de desbordamiento de pila these :

Por lo tanto, mi Rakefile ahora ha vuelto a ser el Rakefile estándar para mi aplicación:

# Add your own tasks in files placed in lib/tasks ending in .rake, # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. require File.expand_path(''../config/application'', __FILE__) require ''rake'' MyApp::Application.load_tasks

3) Cambiar Heroku para ejecutar mi aplicación en Ruby 1.9.2:

heroku stack:migrate bamboo-mri-1.9.2 --app myapp git push heroku master

Y parece estar bien ahora: la tarea cron programada se está ejecutando de todos modos.

EDITAR: ¡Funcionó bien, una vez, luego voló de nuevo la próxima vez que empujé algo! Arrgh. Creo que lo arreglé ahora, con la adición de la gema delayed_job , basada en la conversación . No sé cómo crear trabajos de tareas: trabajo .

Instalar delayed_job no parece una gran solución, pero HA funcionado, y podría querer usarlo en algún momento, supongo, especialmente con el trabajo cron de Heroku una vez por hora (que simplemente no es lo suficientemente frecuente - hay cosas que Probablemente quiera correr cada cinco minutos). Después de instalar la joya de la delayed_job , tuve que hacer la configuración, de lo contrario, Heroku se queja de la tabla de delayed_jobs la delayed_jobs :

#add to gemfile gem ''delayed_job'' #at command line bundle install rails g delayed_job rake db:migrate git add -A git commit -a -m "added delayed_job gem" git push heroku rake db:migrate --app myapp heroku restart --app myapp


Pon esto en tu Rakefile de arriba, requiere ''rake'':

require ''rake/dsl_definition''


Su problema es causado por no eliminar el archivo Gemfile.lock y no es específico de Heroku. Eliminar Gemfile.lock debería solucionar este problema, pero te llevará directamente a otro:

To [email protected]:tailored-landing-pages.git * [new branch] master -> master manfred@painstation2:~/Desktop/projects/ror/ta/tlp307$ heroku rake db:migrate rake aborted! ninitialized constant Rake::DSL /app/Rakefile:13:in `<class:Application>'' /app/Rakefile:12:in `<module:Tlp307>'' /app/Rakefile:11:in `<top (required)>'' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2373:in `load'' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:1991:in `run'' /usr/ruby1.9.2/bin/rake:31:in `<main>''

Desafortunadamente, todavía no he encontrado la solución para ese problema, ya que la degradación de Rake a 0.8.7 no parece funcionar aquí. Si alguien más tiene una respuesta, la apreciaría muchísimo.


Tenía una aplicación Rails 3.0.11, que especificaba la versión de rake 0.8.7 en el Gemfile para evitar el problema de la versión 0.9.2 Rake :: DSL.

Después de convertir la aplicación a Rails 3.2.0 (pila Heroku Cedar), estaba teniendo un problema con el trabajador (una tarea de rake) que se colgaba. Cambié "rastrillo de gema", "0.8.7" a "rastrillo de gema", que incluía la versión de rastrillo 0.9.2.2. El trabajador dejó de bloquearse con la nueva versión.