7月 072012
cronでbundler.require使ってるRubyスクリプトを動かした時に出たエラー。何の事かわからなくて6時間ぐらい悩んだ。
こういう構成で
.
|-- Gemfile
|-- Gemfile.lock
`-- main.rb
main.rb
#!/usr/bin/env ruby
require 'rubygems'
require 'bundler/setup'
Bundler.require
crontabから実行
0 * * * * /usr/bin/ruby /home/shokai/src/ruby/main.rb
こんなエラーがでた
private method `require' called for Bundler:Module
Bundler.requireはカレントディレクトリかそこより上にGemfileがあったらその中身をrequireするので
0 * * * * cd /home/shokai/src/ruby && /usr/bin/ruby main.rbこうしたら動いた。
最終的にcronこうなってる
SHELL=/usr/bin/zsh
PATH=/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/shokai/bin:$PATH
0 * * * * cd /home/shokai/src/ruby && ruby main.rb