/ / Ako nastavím prostredie cron na spustenie skriptu Ruby? - rubín, cron

Ako nastavím prostredie cron na spustenie skriptu Ruby? - rubín, cron

Mám rubínový skript na Linode VM, ktorý by som chcel bežať každú minútu.

Keď spustím rubínový skript ručne cez príkazový riadok, beží perfektne. Ale keď cron spustí súbor, hádže podivnú chybu:

undefined method `closed?" for nil:NilClass

[ "/Usr/lib/ruby/1.8/net/http.rb:1060:in request"", "/var/lib/gems/1.8/gems/httparty-0.7.3/lib/httparty/request.rb:69:invykonať "", "/var/lib/gems/1.8/gems/httparty-0.7.3/lib/httparty.rb:394:in perform_request"", "/var/lib/gems/1.8/gems/httparty-0.7.3/lib/httparty.rb:346:inzískať "", "/var/lib/gems/1.8/gems/httparty-0.7.3/lib/httparty.rb:426

Prešetrujem tento problém a zdá sa, že to má niečo spoločné s vyprázdneným prostredím, na ktorom cron spúšťa skript.

Potrebujem zdroj mé prostredie Ruby v súbore crontab? Ak áno, čo presne potrebujem?

Tu je môj env:

RubyGems Environment:
- RUBYGEMS VERSION: 1.3.5
- RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
- INSTALLATION DIRECTORY: /var/lib/gems/1.8
- RUBY EXECUTABLE: /usr/bin/ruby1.8
- EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /var/lib/gems/1.8
- /root/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://gems.rubyforge.org/

which ruby: /usr/bin/ruby

Vdaka za pomoc!

odpovede:

2 pre odpoveď č. 1

Keď cron spustí skripty, nezdieľa vaše prostredie. Zvyčajne je najjednoduchšia vec, ktorú musíte urobiť, ak napíšete skript wrap shell, ktorý vám poskytne všetko, čo potrebujete, a potom zavolá váš rubínový skript.

Napríklad väčšina mojich cron skriptov vyzerá niečo podobne

#!/bin/sh

. ${HOME}/.bashrc

# Do Stuff - here is where you would call your ruby script