Capyabara + PhantomJS(poltergeist)のRubyスクリプトをcronで流したい

Capyabara + PhantomJS(poltergeist)のRubyスクリプトをcronで流したいと思った時のお話。 シェルにログインして実行すると、上手く動作するのに、cronからは動かない。

結論から言うと、自分の環境では、

  • .bash_profileにphantomjsのPATHを明記($HOME/pahtomjs/bin直下にバイナリ生成済み)する
  • bash -lc でログインして、実行するdirectoryまで行き、実行する

ことで、cronで実行できた。cronの使い方も分からないが、PATH関係も疎いので

スポンサーリンク

最終形

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

export PATH="$PATH:$HOME/bin"

export PATH="$HOME/phantomjs/bin:$PATH"
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
00 06 * * * /bin/bash -lc 'cd /home/app/appname/current/; bundle exec ruby script.rb 1>> /home/app/appname/current/script.log 2>> /home/app/appname/current/error.log'

参考

スポンサーリンク