2011-02-07 8 views
7

스택 :Crontab에서 레이크 작업을 하시겠습니까?

아파치

레일 2.3.8

레드햇 리눅스

루비 기업 1.8.7

얻었다에 의미 내 응용 프로그램 사용자의 crontab에 다음 레이크 작업 15 분마다 데이터베이스 테이블에 레코드를 가져옵니다.

*/15 * * * * app_user cd /var/www/apps/my_app/current/ && rake thing:do_stuff RAILS_ENV=production 

cron 데몬이 cron 로그에서이 작업을 실행하고 있지만 레코드를 가져 오는 데이터베이스 테이블이 변경되지 않는다는 것을 알 수 있습니다. 이 작업은 수동으로/var/www/apps/my_app/current 디렉토리에서 실행하고 예상대로 테이블에 레코드를 가져올 때 오류없이 작동합니다.

나는 .../옵션/루비 - 기업에서와 흔들하지 어쩌면 기본 경로를 생각하고, REE를 사용하여 반영하도록 crontab을 내가 실제로 실행하려면이 레이크 작업을 얻는 방법

를 PATH 변수를 재설정 크론과 함께?

+1

해당 사용자로 실행 중이십니까? sudo su app_user를 실행 한 다음 cron 작업 에서처럼 명령을 정확히 실행하십시오. 그것은 cron에서 작동해야합니다. –

답변

8

rake 바이너리의 전체 경로 (콘솔 which rake에서 실행하고 레이크를 전체 경로로 바꾸십시오)를 사용하십시오. 예를 들어

, 경우 which rake 반환 다음 경로 :

/Users/bob/.rvm/gems/ruby-1.9.3-p194/bin/rake 

당신은 레이크 작업을 실행하려면 다음 명령을 사용한다 :

/Users/bob/.rvm/bin/rvm all do bundle exec rake allocator:snapshot 

을 내가 원하는 때마다 루비에서 cron 작업에 대한 보석

cron에서 작업이 실패했는지 감지하는 방법은 무엇입니까? 실패 할 때 cron은 이메일을 보내려고합니다. 따라서 smtp 설정 (예 : google)을 사용하도록 postfix를 구성하고 시스템에서 해당 cronjob을 실행중인 사용자의 홈 디렉토리에 이메일 만 포함하는 ~/.forward 파일을 추가하십시오.

10
0,15,30,45 * * * * /bin/bash -l -c 'cd /var/www/apps/my_app/current && RAILS_ENV=production bundle exec rake thing:do_stuff --silent' 
관련 문제