2010-04-06 4 views
4

나는 다음을 수행하여 레이크 작업을 실행하는 cron 작업을 얻을 관리해야 그것은 내가 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) 

내 CUST을 완료 할 때 실행하고자하는 같은

) 배쉬에서 작업이 보인다

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 

을 사용하거나이 필요한 항목없이

는 사람이 되거 수 있습니다 ... 아직 나에게 같은 오류를 제공, 다음과 같이 lib 디렉토리/작업에서 톰 레이크 파일은? 또는 대안이 기능을 실행할 스크립트 디렉토리에있는 사용자 정의 파일을 만드는 방법에 나에게 조언을 (난 이미 cron 작업을 실행하고 내 모든 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 

는 않습니다 :

자체에 cron 작업으로 ENV

하고 다음과 같은 출력을 받았다 이것은 루비 파일을 제대로로드하지 못한다는 것을 의미합니까? .... 도 Jonathans의 충고를 따랐다 다음과 같은 cron.sh 파일

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

여전히 누락 된 보석 ... 건배를 통지 받고 생산!

답변

9

가장 쉬운 방법은 쉘 타입

ENV 출신이 (그러나 종류의 산탄 총 approche를) 수정 | 그렙 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 

같이 보일 것이 출력을 해당 사용자

위해 귀하의 crontab을 추가

+0

불행히도 ... 시도해 주셔서 감사합니다 :) –

+0

나는 여전히 경로 문제라고 생각합니다. 그냥/usr/bin 및/bin은 상당히 작고 좁은 경로입니다. YOUR 쉘에서 echo $ PATH를 입력하면 경로를 만들어야합니다. – kSiR

+0

예치 나는 레이크 작업을하기 위해 실행하고 싶었던 cron.sh 파일에 넣었습니다.하지만 불행히도, 응용 프로그램에 설치된 보석을로드하고 싶지 않습니다 ... 나는 단순한 무언가를 놓치고 있어야합니다 ... –

0

cron이 실행되면 매우 최소한의 환경에서 실행됩니다. env 또는 which ruby 인 cron 작업을 실행 해보십시오. 그러면 PATH가 대화 형 쉘 경로와 같지 않을 수도 있습니다. .bash_profile 또는 다른 셸 시작 파일에서 PATH를 구체적으로 설정해야합니다.

+0

내 게시물을 ENV 출력으로 업데이트했습니다. .sh 스크립트를 만든 경우 더 좋을 수도 있습니다. 위의 코드도 추가되었습니다 ... –

0

나는이 모든 것을 사용자 정의 스크립트/파일로 만들고 cron을 통해 실행합니다. 나는 어떻게 그럴 지 모르지만 일할 수 있었다. ... 모든 노력에 감사드립니다.