2014-01-06 4 views
5

RVM 환경에서 10.5를 실행중인 이전 PPC 컴퓨터에서 간단한 루비 스크립트를 실행하려고합니다.RVM의 Ruby cron 작업에서 보석을 찾을 수 없습니다. env

SO에서 검색 한 결과, post에서 선택한 답변을 추적했습니다.

SHELL=/bin/bash 
00 * * * * BASH_ENV=~/.bash_profile && /bin/bash -c '~/deggy/onlineGW.rb' 

이 명령은 사용자 샘의 루트에 배쉬에서 잘 실행 :

이 결과 크론의 라인입니다. 내가 RVM을 실행 해요 이후가 내 기본 루비를 설정,

X-Cron-Env: <SHELL=/bin/bash> 
X-Cron-Env: <PATH=/usr/bin:/bin> 
X-Cron-Env: <LOGNAME=sam> 
X-Cron-Env: <USER=sam> 
X-Cron-Env: <HOME=/Users/sam> 
Date: Mon, 6 Jan 2014 03:15:00 -0600 (CST) 
/Users/sam/deggy/onlineGW.rb:3:in `require': no such file to load -- nokogiri (LoadError) 

OK : 여기 크론에서 오류의 출력의

#!/usr/bin/env ruby 
require 'open-uri' 
require 'nokogiri' 
... 

:

여기 내 스크립트의 두드러진 부분 1.9.3 그리고 앞서 언급했듯이,이 명령은 터미널에서 실행되지만 cron에서는 실행되지 않습니다. 놀이 환경이 다른가요?

분명히, 제가 간과하고있는 것이 있습니다. 내가 그것을 볼 수 있도록 도와주세요, SAM

답변

7

몇 가지 CRON 맛과 RVM 함께 작동하도록 여러 가지 운영 체제를 구성했습니다.

처음에는 RVM's official 해결책을 시도했지만 FreeBSD와 Gentoo에서는 작동하지 않았습니다.

# atmat's crontab configuration 
SHELL=/bin/bash 
PATH=/home/atma/.rvm/gems/ruby-1.9.3-p0/bin:/home/atma/.rvm/gems/[email protected]/bin:/home/atma/.rvm/rubies/ruby-1.9.3-p0/bin:/home/atma/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.5.3 
RUBYLIB=/home/atma/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1 
GEM_HOME='/home/atma/.rvm/gems/ruby-1.9.3-p0' 
GEM_PATH='/home/atma/.rvm/gems/ruby-1.9.3-p0:/home/atma/.rvm/gems/[email protected]' 
RUBYOPT=rubygems 

%nightly,mail(no) * 8-9 /home/atma/.rvm/rubies/ruby-1.9.3-p0/bin/ruby /usr/local/bin/morula -s username update 

위의 예는 젠투 GNU/리눅스에서 작동하고 fcron 더 유연하고 아름다운 사용 : crontab을 편집기 [1]을 시작하기 위해 울부 짖는하지만 첫 번째 유형 crontab -e을 가리 켰을 때, 나는 수동으로 모든 관련 경로를 추가했다 표준 cron에 대한 강력한 솔루션이지만 모든 cron에서 작동합니다.

[1]이 명령은 기본 시스템 편집기로 crontab을 열게됩니다.

+0

내가 읽지 않은 것 중 하나는 crontab의 설정이 어디에 있는지입니다. 구성을 어디서 업데이트합니까? – sam452

+0

나는 crontab의 상단에 붙여 넣기 설정 라인의 상응하는 믿습니다.내 오류가'read_nonblock '을 반환하기 때문에 좀 더 가까워진다 : 연결은 peer에 의해 재설정된다. 물론, BASH_ENV = ~/.bash_profile &&/bin/bash -c '~/.rvm/ruby ​​/ ruby-1.9.3-p0/bin/ruby ​​~/deggy/onlineGW.rb'를 사용하는 터미널에서는 작동하지 않으므로 아마도 원격 서버가이를 차단합니다. – sam452

+0

요청한 정보를 추가했습니다. –

0

cron 작업에 대한 기본 RVM 루비 환경을로드하려면 사용자 모드가 RVM 인 경우 사용자가 ohho이고 홈 폴더가 /home/ohho 인 것으로 가정합니다. 편집하려면 명령 줄에서 crontab -e를 입력 :

MAILTO="" 
SHELL=/bin/bash 
BASH_ENV=/home/ohho/.bash_profile 
HOME=/home/ohho 

* * * * * rails -v > /home/ohho/env.txt 

마지막 줄은 적절하게 호출 할 수 있습니다 (설치된 경우) 테스트 rails입니다. ~/.bash_profile이 RVM 환경을로드하는지 확인해야합니다 (bash의 경우 기본값).

SHELLBASH_ENV에 대한 자세한 설명은 Daniel's answer에서 찾을 수 있습니다.

28

또는 당신은 단순히 나를 위해 일한

rvm cron setup # let RVM do your cron settings

을 시도 할 수 있습니다. via https://coderwall.com/p/vhv8aw

+0

내가 필요한 것! 감사! – Vetal4eg

+1

미친 어떻게이 명령은 더 자주 참조되지 않습니다 –

+2

경고 : 이것은 기존의 crontab 항목을 덮어 씁니다 – hagope

관련 문제