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