Capyabara + PhantomJS(poltergeist)のRubyスクリプトをcronで流したい
更新日:2019.04.27
作成日:2016.01.16
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'