Je reçois des erreurs similaires à celles de ces questions , sauf que les miennes se produisent sur 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 réponse à ces questions semble être de préciser gem 'rake', '0.8.7'
parce que la version 0.9 pose le problème.
Quand j'essaye d'ajouter gem 'rake', '0.8.7'
à mon gemfile et pousser à Heroku j'obtiens cette erreur:
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'
Mon gemfile fonctionne normalement bien sur Heroku. Que devrais-je faire?
Réponses:
Mettez ceci dans votre Rakefile ci-dessus, nécessite 'rake':
la source
require
ligne au rakefile (et le réengagement et le repoussement vers github et Heroku) l'a résolu. @David, j'utilise Windows avec le framework RoR de RailInstaller 1.2.0.Chaque fois que vous modifiez votre Gemfile, vous devez mettre
bundle install
à jour votre lockfile (Gemfile.lock). L'erreur que vous obtenez lors du push n'est pas spécifique au changement de version de rake.Notez le message d'erreur que vous avez reçu:
la source
J'ai résolu ça, finalement, après beaucoup de bavardages. La version courte de ce que j'ai fait, en ratant les nombreuses expériences, était la suivante:
1) changez le Gemfile pour spécifier Rake 0.8.7
2) Supprimez un hack que j'avais précédemment ajouté à Rakefile basé sur la question Stack Overflow Ruby on Rails et les problèmes de Rake: constante non initialisée Rake :: DSL :
Ainsi, mon Rakefile est maintenant redevenu le Rakefile standard pour mon application:
3) Changez Heroku pour exécuter mon application dans Ruby 1.9.2:
Et cela semble bien maintenant - la tâche cron planifiée est en cours d'exécution de toute façon.
EDIT: Il a bien fonctionné, une fois, puis a explosé à nouveau la prochaine fois que j'ai poussé quelque chose! Arrgh. Je pense que je l'ai corrigé maintenant, avec l'ajout de la
delayed_job
gemme, en fonction de la conversation Je ne sais pas comment créer des tâches: travailler .L'installation
delayed_job
ne semble pas être une excellente solution, mais cela a fonctionné, et je pourrais vouloir l'utiliser parfois, je suppose, en particulier avec le travail cron de Heroku une fois par heure (qui n'est tout simplement pas assez fréquent - il y a des choses que je '' Je veux probablement courir toutes les cinq minutes). Après avoir installé ladelayed_job
gemme, j'ai dû faire la configuration pour cela, sinon Heroku se plaint de ladelayed_jobs
table manquante :la source
J'avais une application Rails 3.0.11, qui spécifiait la version 0.8.7 de rake dans le Gemfile pour contourner le problème de la version 0.9.2 Rake :: DSL.
Après avoir converti l'application en Rails 3.2.0 (pile Heroku Cedar), j'avais un problème avec le travailleur (une tâche de râteau) qui plantait. J'ai changé "gem 'rake', '0.8.7'" en "gem 'rake'", qui comprenait la version 0.9.2.2 de rake. Le worker a cessé de planter avec la nouvelle version.
la source
Votre problème est causé par la non suppression du
Gemfile.lock
fichier et n'est pas spécifique à Heroku. La suppressionGemfile.lock
devrait résoudre ce problème, mais vous mènera directement à un autre:Malheureusement, je n'ai pas encore trouvé la solution à ce problème, car la rétrogradation de Rake à 0.8.7 ne semble pas fonctionner ici. Si quelqu'un d'autre a une réponse, je l'apprécierais beaucoup.
la source