2014-01-06 8 views
5

Ich versuche, ein einfaches Ruby-Skript auf meinem alten PPC-Computer läuft 10.5 in einer RVM-Umgebung.Gem nicht gefunden in Ruby Cron-Job in RVM env

Suche auf SO, ich habe die gewählte Antwort von diesem post gefolgt.

Dies ist die Zeile in cron als Ergebnis:

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

Dieser Befehl in heftigen Schlag an der Wurzel des Benutzers sam feinen läuft.

Hier ist der markante Teil meines Skript:

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

Hier ist der Ausgang des Fehlers von cron:

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, da ich RVM betreibe ich mein Standard-Rubin eingestellt haben 1.9.3 und wie ich oben erwähnt habe, wird der Befehl in Terminal aber nicht in Cron ausgeführt. Gibt es eine andere Umgebung im Spiel?

Also klar, es gibt etwas, das ich übersehen habe. Hilf mir, es zu sehen, Sam

Antwort

7

Ich konfigurierte mehrere verschiedene Betriebssysteme, um mit ein paar CRON Aromen und RVM zu arbeiten.

Ich versuchte zuerst RVM's official Lösung für das Problem, aber nicht unter FreeBSD und Gentoo. Ich musste manuell alle relevanten Pfade hinzufügen, wie gezeigt unten, aber ersten Typ crontab -e um den Crontabeditor zu starten [1]:

# 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 

Das obige Beispiel arbeitet unter Gentoo GNU/Linux mit fcron einer flexibleren, schön und leistungsstarke Lösung für Standard-Cron, wird aber mit jedem Cron arbeiten.

[1] Dieser Befehl öffnet crontab mit Ihrem Standard-System-Editor.

+0

Eines der Dinge, die ich nicht gelesen habe, ist, wo die Konfiguration für Crontab ist. Wo würde ich meine Konfiguration aktualisieren? – sam452

+0

Ich glaube, das Äquivalent Ihrer Konfigurationszeilen wird oben in der Crontab eingefügt.Ich komme etwas näher, als mein Fehler 'read_nonblock 'zurückgibt: Verbindung zurückgesetzt von Peer. Natürlich funktioniert das im Terminal mit BASH_ENV = ~/.bash_profile &&/bin/bash -c '~/.rvm/rubies/ruby-1.9.3-p0/bin/ruby ​​~/deggy/onlineGW.rb' also nicht wahrscheinlich der Remote-Server blockiert es. – sam452

+0

Ich habe die angeforderten Informationen hinzugefügt. –

0

Standard RVM Rubin Umgebung für cron Arbeitsplätze zu laden, hier ist das, was ich ein Setup für RVM Benutzer-Modus übernimmt der Benutzer ohho ist, ist Home-Ordner /home/ohho. So bearbeiten, geben Sie crontab -e in der Befehlszeile:

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

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

Die letzte Zeile ist für die Prüfung rails (falls vorhanden) richtig aufgerufen werden. Sie sollten auch prüfen, ob ~/.bash_profile die RVM-Umgebung lädt (die Standardeinstellung für bash).

Eine detaillierte Erklärung von und BASH_ENV finden Sie in Daniel's answer.

28

Oder Sie können einfach

rvm cron setup # let RVM do your cron settings

versuchen, die für mich gearbeitet. über https://coderwall.com/p/vhv8aw

+0

Was ich brauchte! Vielen Dank! – Vetal4eg

+1

wahnsinnig, wie dieser Befehl häufiger nicht referenziert wird –

+2

ACHTUNG: dies überschreibt Ihre bestehenden crontab Einträge – hagope