2011-08-26 1 views
1

난 3.09 (ruby 1.9.2)에서 작동하는 delayed_job을 얻는 데 어려움을 겪고 있습니다. 내가 성공할 수 있었던 유일한 방법은 rake 명령 인 tape 명령을 테이프로 묶는 것이다. 하지만 레일즈 애플리케이션이 시작될 때 자동으로 시작되기를 원합니다.delayed_job에서 우분투와 함께 monit으로 실행

우분투 아래에 monit을 설치했고, 내 응용 프로그램에있는 파일을 실행하도록 구성했습니다. 이 같은 모습을 실패

check process delayed_job with pidfile /home/me/myapp/tmp/pids/delayed_job.pid 
start program = "/home/me/myapp/script/delayed_job start" 
stop program = "/home/me/myapp/script/delayed_job stop" 

그리고 나는 delayed_job 스크립트 파일에서 환경 설정 추가 :

: 나는 명령을 실행하면 내가받을 다음과 같은 오류 "sudo는 MONIT delayed_job 시작"

#!/usr/bin/env ruby 

    ENV['RAILS_ENV'] = "development" 
    require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment')) 
    require 'delayed/command' 
    Delayed::Command.new(ARGV).daemonize 

/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- bundler/setup (LoadError) 

그래서 나는 sudo는 내가 다음의 해결책을 시도 루비 환경 의 잘못된 버전을 사용하고 있기 때문에 추측 : rvm monit delayed_job

시작 프로그램/정지 프로그램 행에 rvm -S를 추가합니다. 는하지만 여전히 오류와 함께 실패 : RVM 명령을 찾을 수 없습니다

내 RVM의 디렉토리는 내가에서 해결 방법을 찾기 위해 노력

내 홈 디렉토리의 /home/me/.rvm에 위치한

(sudo changes PATH - why?) 경로를 변경 환경 변수를 추가하여

/usr/bin/env PATH=/home/me/.rvm/bin:$PATH 

"sudo monit start delayed_job"명령이 성공했습니다! 노동자가 시작했다. 그러나 문제가있다 : 나는 sudo를 시작 /etc/init.d/monit 실행하고 나는 syslog에 보면 난 아직도 'delayed_job'를 얻을 때 그래서 내가 조사하는 방법을 모르는

을 시작하지 못했습니다 더 자세한 방법, monit에 대한 자세한 오류를 얻는 방법.

답변

1

나는이 문제를 해결하는 데 마침내 성공했습니다. 나는이 같은 MONIT 파일 수정 : 최신 버전에 문제가 있다는 것 때문에

check process delayed_job with pidfile /home/me/myapp/tmp/pids/delayed_job.pid 
start program = "/bin/su - me -c 'cd /home/me/myapp/; script/delayed_job start'" 
stop program = "/bin/su - me -c 'cd /home/me/myapp/; script/delayed_job stop'" 

나는 또한 데몬 보석을 다운 그레이드 한을. 그래서 나는 지금 데몬 나는 또한 로그 파일 /home/me/myapp/log/delayed_job.log의 권리를 수정 1.0.10

나의 뿌리 전에 만들어진 것으로 보인다 때문에, v에와 사용하고 있습니다 내 사용자가에 액세스 할 수 없었다

1

이 제대로

start program = "/usr/local/rvm/bin/rvm-shell -c 'cd /var/www/[APP]/current/; RAILS_ENV=production bundle exec bin/delayed_job start'" ENV을 읽어 나를 위해 일한 유일한 라인이다 (나는 "나"사용자와 명령 "스크립트 시작/delayed_job"을 테스트하는 문제가 있었다)

희망이 있습니다.