7rpn’s blog: うわああああな日常

好きなことをつらつらと。AIとかで面白いことをしたい。

Rubyのclockworkでエラーが出る

ちょっとはまった。

出たバグ

rubyファイルとして実行すると実行できたプログラムを,clockworkのジョブの中にいれて実行するとSQlite3::Exceptionのエラーとか出る。

原因

# hoge.rb
print `pwd`
# hage.rb
require "clockwork"
include Clockwork

every(1.minutes, ''piyo") do
  print `pwd`
end 

っていうhoge.rbとhage.rbってファイルを作った。これを以下のように実行した場合,

$ ruby folder/hoge.rb 
 => home/folder
$ clockwork folder/hage.rb
 => home

ってなる。

つまり,rubyとして実行した場合は実行ディレクトリが(rubyファイルの存在する)folder内になるのに対して,clockworkでは現在のディレクトリ(rubyファイルの親ディレクトリ)が実行ディレクトリになるっぽい。
まぁそりゃあfolder内のデータベースファイルにアクセスできないっすよねっていう。もしかして常識なんかな?