Salut à tous, Je rencontre un problème avec mes tâches rake programmées par un cron : une erreur me dit que le gem rack 1.0.1 n'est pas présent. Or, si je lance les tâches manuellement en ligne de commande, l'erreur ne survient pas. Voilà la commande que je lance dans mon cron : 0 5 * * * cd /home/user/site && /usr/local/bin/rake task RAILS_ENV=production Et voilà le début de la stack trace rake aborted! Could not find RubyGem rack (~> 1.0.1) /home/user/site/config/../vendor/rails/railties/lib/initializer.rb:271:in `require_frameworks' /home/user/site/config/../vendor/rails/railties/lib/initializer.rb:134:in `process' /home/user/site/config/../vendor/rails/railties/lib/initializer.rb:113:in `send' /home/user/site/config/../vendor/rails/railties/lib/initializer.rb:113:in `run' /home/user/site/config/environment.rb:9 /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' /home/user/site/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' /home/user/site/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in' /home/user/site/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' /home/user/site/vendor/rails/railties/lib/tasks/misc.rake:4 /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call' Sachant que si j'exécute manuellement : /home/user/site/$ rake task cela fonctionne sans problème. Vous voyez d'où ça peut provenir? Ma configuration : rails 2.3.5 rake 0.8.7 rack 1.0.1 ruby 1.8.7 Merci d'avance pour votre aide, Julien
on 2010-02-04 15:50
on 2010-02-04 15:59
L'utilisateur de la tâche cron est-il bien le même avec lequel tu lances rake directement ? Ne faut-il pas spécificé le GEM_PATH pour être sûr de trouver la gem au bon endroit ? ++ yk Le 4 février 2010 15:50, Julien Lestavel <list-incoming@andreas-s.net> a écrit :
on 2010-02-04 16:01
Je confirme, dans les cron il faut respécifier le PATH. 2010/2/4 Yann KLIS <yann.klis@gmail.com>
on 2010-02-04 18:31
Sinon, je sais pas si cela peut aider mais j'ai utilise un plugin pour gerer la crontab (taches relatives a un projet rails) sur un mes projets et ca marche plutot pas mal: http://github.com/latimes/craken/
on 2010-02-04 18:44
Effectivement, le cron n'est pas exécuté par le même utilisateur (le cron est exécuté par root). Cependant, je précise le GEM_PATH dans mon crontab : GEM_PATH=/usr/local/lib/ruby/gems/1.8 Et quand je fais un echo $GEM_PATH en étant connecté à mon nom (donc pas le même utilisateur que lors du cron), je ne reçois rien, comme si le GEM_PATH n'était pas initialisé dans ma session. Je ne comprends donc toujours pas... Le plugin craken a l'air vraiment bien : ça semble pas mal de "railsifier" cet aspect là de l'administration serveur (pour ne rien perdre au déploiement par exemple). Merci pour le tuyau. Etienne Duputel wrote: > Je confirme, dans les cron il faut respécifier le PATH. > > 2010/2/4 Yann KLIS <yann.klis@gmail.com>
on 2010-02-04 19:21
Le 4 février 2010 12:44, Julien Lestavel <list-incoming@andreas-s.net> a écrit : > Le plugin craken a l'air vraiment bien : ça semble pas mal de > "railsifier" cet aspect là de l'administration serveur (pour ne rien > perdre au déploiement par exemple). Merci pour le tuyau. > Il existe également whenever qui offre une DSL simple à utiliser http://github.com/javan/whenever every 3.hours do runner "MyModel.some_process" rake "my:rake:task" command "/usr/bin/my_great_command" end every 1.day, :at => '4:30 am' do runner "MyModel.task_to_run_at_four_thirty_in_the_morning" end every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot runner "SomeModel.ladeeda" end every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday runner "Task.do_something_great" end Cordialement, Florent
on 2010-02-05 14:08
Il fallait que j'installe la version 1.0.1 pour l'utilisateur root (sudo gem install rack -v=1.0.1) pour que ça marche, car visiblement Rails 2.3.5 n'est pas compatible avec la dernière version de rack (1.1.0, depuis le 3/1/2010). Merci pour vos conseils (spécialement pour whenever, je vais le mettre en place, ça a l'air très pratique)
on 2010-02-06 00:31
J'aime bien Craken aussi. Pour le root: tu veux vraiment faire tourner ton cron en root ? Pourquoi ne pas utiliser le cron de l'utilisateur sous lequel tourne ton appli ? -- Thibaut
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.