Recibo errores similares a los de estas preguntas , 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 específica gem 'rake', '0.8.7'
porque la versión 0.9 causa el problema.
Cuando intento agregar gem 'rake', '0.8.7'
a mi archivo de gemas y presionar a Heroku, aparece 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 git@heroku.com:my_app.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:my_app.git'
Mi archivo de gemas normalmente funciona bien en Heroku. ¿Qué tengo que hacer?
Respuestas:
Pon esto en tu Rakefile anterior require 'rake':
fuente
require
línea al archivo rake (y volver a comprometer y volver a presionar a github y Heroku) lo resolvió. @David, estoy usando Windows con el marco RoR de RailInstaller 1.2.0.Cada vez que cambie su archivo Gemfile, debe
bundle install
actualizar su archivo de bloqueo (Gemfile.lock). El error que está obteniendo en push no es específico para cambiar la versión de rake.Tenga en cuenta el mensaje de error que recibió:
fuente
Resolví esto, finalmente, después de un montón de tonterías. La versión corta de lo que hice, perdiéndome muchos experimentos, fue esta:
1) cambie el Gemfile para especificar Rake 0.8.7
2) Elimine un truco que había agregado previamente a Rakefile basado en la pregunta de Stack Overflow Ruby on Rails y problemas de Rake: Rake constante no inicializada :: DSL :
Entonces, mi Rakefile ahora ha vuelto a ser el Rakefile estándar para mi aplicación:
3) Cambiar Heroku para ejecutar mi aplicación en Ruby 1.9.2:
Y parece estar bien ahora: la tarea cron programada se está ejecutando de todos modos.
EDIT: se ejecuta bien, una vez, luego explotó de nuevo la próxima vez que empujaba algo! Arrgh. Creo que lo arreglé ahora, con la adición de la
delayed_job
gema, basado en la conversación No sé cómo construir trabajos de tarea: trabajo .La instalación
delayed_job
no parece una gran solución, pero ha funcionado, y creo que podría querer usarla en algún momento, especialmente con el trabajo cron de una vez por hora de Heroku (que simplemente no es lo suficientemente frecuente, hay cosas que ' probablemente querrá correr cada cinco minutos). Después de instalar ladelayed_job
gema, tuve que configurarla; de lo contrario, Heroku se queja de ladelayed_jobs
tabla que falta :fuente
Tenía una aplicación Rails 3.0.11, que especificaba la versión 0.8.7 de rake en Gemfile para solucionar el problema Rake :: DSL de la versión 0.9.2.
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 rastrillo) que fallaba. Cambié "gem 'rake', '0.8.7'" por "gem 'rake'", que incluía la versión 0.9.2.2 del rake. El trabajador dejó de fallar con la nueva versión.
fuente
Su problema se debe a que no eliminó el
Gemfile.lock
archivo y no es específico de Heroku. La eliminaciónGemfile.lock
debería solucionar este problema, pero lo llevará directamente a otro: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, se lo agradecería mucho.
fuente