2010-04-06 2 views
4

мне удалось получить работу хрон, чтобы запустить задачу грабель, выполнив следующие действия:грабель задача по проблемным хронам погрузочного RubyGems

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

Я проверил с which ruby и which rake, чтобы убедиться, что пути являются правильными (от Баша)

работа выглядит, как он хочет работать, как я получаю следующее сообщение электронной почты от хрон демона, когда он завершает

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) 

моей корки ом реки файл в LIB/задаче выглядит следующим образом:

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 

с или без требуют пунктов, она по-прежнему дает мне ту же ошибку ...

кто может пролить некоторый свет на это? или же сообщить мне о том, как сделать собственный файл в директории скрипта, который будет выполнять эту функцию (у меня уже есть хрон рабочего, который будет работать и обрабатывать все мои delayed_jobs.

После Jonathans предложения ниже я побежал

окр

как хроны сами по себе и получил следующий результат:

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

делает это означает, что он не загружает рубиновые файлы правильно? .... также принял совет Jonathans и произвел следующий cron.sh файл

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

по-прежнему получать недостающие камни заметить ... Ура!

ответ

9

Самый простой способ исправить это (но вид из дробовика approche) от вашего типа оболочки

окр | Grep PATH

Затем возьмите этот вывод и добавить его ваш кронтаб для этого пользователя

так это будет выглядеть примерно так

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 

Просто убедитесь, что ваши драгоценные камни находятся внутри этого пути

+0

Было много затруднений в обновлении файла с его вставкой текста там, где он не должен был ... невозможно выполнить этот вариант, к сожалению ... спасибо за попытку :) –

+0

Я все еще думаю, что это проблема пути, просто используя/usr/bin и/bin - довольно маленький и узкий путь. Из ВАШЕЙ оболочки типа echo $ PATH, и это то, что вы должны сделать. – kSiR

+0

yeh Я положил это в файл cron.sh, который я хотел запустить, чтобы выполнить задачу rake .. но, к сожалению, он не хочет загружать установленные приложениями драгоценные камни ... Мне должно быть что-то не так просто ... –

0

Когда cron работает, он выполняется с минимальной средой. Попробуйте запустить задание cron, которое просто делает env или which ruby, и вы можете видеть, что ваш PATH не совпадает с вашим интерактивным путем оболочки. Вам нужно будет настроить PATH в .bash_profile или другом файле запуска оболочки.

+0

обновил мое сообщение с выходом ENV ... возможно, было бы лучше, если бы я сделал сценарий .sh ... добавил, что кодирование выше также ... –

0

Я обошел все это, создав собственный скрипт/файл и выполнив его через cron. Я не знаю, как, но он сумел работать ... Спасибо за все усилия.