Как настроить среду cron для запуска сценария Ruby? - PullRequest
1 голос
/ 28 января 2011

У меня есть скрипт Ruby на виртуальной машине Linode, который я хотел бы запускать каждую минуту.

Когда я запускаю скрипт ruby ​​вручную из командной строки, он работает отлично. Но когда cron запускает файл, он выдает странную ошибку:

undefined method `closed?' for nil:NilClass

["/ usr / lib / ruby ​​/ 1.8 / net / http.rb: 1060: в request'", "/var/lib/gems/1.8/gems/httparty-0.7.3/lib/httparty/request.rb:69:in выполнить '", "/var/lib/gems/1.8/gems/httparty-0.7.3/lib/ httparty.rb: 394: в perform_request'", "/var/lib/gems/1.8/gems/httparty-0.7.3/lib/httparty.rb:346:in get '"," /var/lib/gems/1.8/gems/httparty-0.7.3/lib/httparty.rb:426

Я исследовал эту проблему, и кажется, что она как-то связана с урезанной средой, в которой cron запускает скрипт.

Нужно ли мне исходить из среды Ruby в файле crontab? Если да, что именно мне нужно?

Вот мой 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

Спасибо за помощь!

1 Ответ

2 голосов
/ 28 января 2011

Когда cron запускает скрипты, он не наследует вашу среду.Обычно проще всего написать скрипт оболочки-обертки, который получает все, что вам нужно, а затем вызывает ваш скрипт ruby.

Например, большинство моих скриптов cron выглядят как

#!/bin/sh

. ${HOME}/.bashrc

# Do Stuff - here is where you would call your ruby script
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...