грабли задачи через cron проблемы с загрузкой rubygems - PullRequest
4 голосов
/ 06 апреля 2010

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

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

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

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

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)

Мой пользовательский файл rake в lib / tasks выглядит следующим образом:

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

с необходимыми элементами или без них, все равно выдает ту же ошибку ...

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

После предложения Джонатана, приведенного ниже, я побежал

окр

в качестве задания cron самостоятельно и получил следующий вывод:

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

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

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

все еще получает уведомление о пропавших камнях ... Ура!

Ответы [ 3 ]

9 голосов
/ 06 апреля 2010

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

env | grep PATH

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

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

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 голосов
/ 11 апреля 2010

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

0 голосов
/ 06 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...