2010-04-06 7 views
4

J'ai réussi à obtenir un emploi cron pour exécuter une tâche de râteau en procédant comme suit:tâche de coupe par rubygems de chargement de problème cron

cd /home/myusername/approotlocation/ && /usr/bin/rake sendnewsletter RAILS_ENV=development 

j'ai vérifié avec which ruby et which rake pour vous assurer que les chemins sont corrects (de bash)

le travail ressemble il veut courir que je reçois le message suivant du démon cron quand il complète

Missing these required gems: 
     chronic 
     whenever 
     searchlogic 
     adzap-ar_mailer 
     twitter 
     gdata 
     bitly 
     ruby-recaptcha 

You're running: 
    ruby 1.8.7.22 at /usr/bin/ruby 
    rubygems 1.3.5 at /home/myusername/gems, /usr/lib/ruby/gems/1.8 

Run `rake gems:install` to install the missing gems. 
(in /home/myusername/approotlocation) 

mon Cust fichier râteau om dans les lib/tâches est la suivante:

task :sendnewsletter => :environment do 
require 'rubygems' 
require 'chronic' 
require 'whenever' 
require 'searchlogic' 
require 'adzap-ar_mailer' 
require 'twitter' 
require 'gdata' 
require 'bitly' 
require 'ruby-recaptcha' 
    @recipients = Subscription.all(:conditions => {:active => true}) 
    for user in @recipients 
     Email.send_later(:deliver_send_newsletter,user) 
    end 
end 

avec ou sans exiger que les envois, il me donne toujours la même erreur ...

quelqu'un peut-il faire la lumière sur ce sujet? ou bien me conseiller sur la façon de créer un fichier personnalisé dans le répertoire de script qui exécutera cette fonction (je l'ai déjà une tâche cron de travail qui se déroulera et traiter tous mes delayed_jobs.

Après suggestion Jonathans ci-dessous j'ai couru

env

comme tâche cron lui-même et a reçu la sortie suivante:

SHELL=/bin/sh 
MAILTO=myemailaddress 
USER=myusername 
PATH=/usr/bin:/bin 
PWD=/home/myusername 
SHLVL=1 
HOME=/home/myusername 
LOGNAME= myusername 
_=/usr/bin/env 

-t cela signifie qu'il ne charge pas correctement les fichiers ruby? .... a également pris des conseils Jonathans et produit le fichier suivant cron.sh

#!/bin/sh 
date 
echo "Executing Matenia Rake Task" 
PATH=/usr/bin:/bin 
cd /home/myusername/approotlocation/ 
rake sendnewsletter 

obtenir encore les pierres précieuses manquantes ... remarquent Cheers!

Répondre

9

meilleure façon de résoudre ce (mais bon d'un fusil de chasse approach) est de type shell

env | grep CHEMIN

Ensuite, prenez cette sortie et ajoutez votre crontab pour cet utilisateur

il ressemblerait à quelque chose comme ça

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 

# m h dom mon dow user command 
42 6 * * *  root job1 
47 6 * * 7  root job2 
52 6 1 * *  root job3 

Assurez-vous que vos gemmes de sont à l'intérieur de ce chemin

+0

Il y avait beaucoup de difficulté dans la mise à jour du fichier avec l'insertion de texte où il n'aurait pas dû être ... ne peut pas terminer cette option malheureusement ... merci d'essayer :) –

+0

Je pense toujours que c'est un problème de chemin, en utilisant/usr/bin et/bin est un chemin assez petit et étroit. De votre shell tapez echo $ PATH et voici ce que vous devriez faire le chemin. – kSiR

+0

yeh j'ai mis cela dans le fichier cron.sh je voulais courir pour faire la rake task .. mais malheureusement, il ne veut pas charger les gemmes installées des applications ... il me manque quelque chose de si simple ... –

0

Lorsque cron s'exécute, il s'exécute dans un environnement très minimal. Essayez d'exécuter un travail cron qui ne fait que env ou which ruby, et vous pouvez voir que votre chemin n'est pas le même que votre chemin de shell interactif. Vous devrez définir spécifiquement le chemin dans .bash_profile ou un autre fichier de démarrage du shell.

+0

mis à jour mon poste avec la sortie ENV ... peut-être ce serait mieux si j'ai fait un script .sh .... ajouté que le codage ci-dessus ainsi ... –

0

J'ai contourné tout ceci en créant un script/fichier personnalisé et en l'exécutant via cron. Je ne sais pas comment, mais il a réussi à travailler ... Merci pour tous les efforts.

Questions connexes