毎日cronで日記にtwitterでのつぶやきを収集して投稿するスクリプトを実行しています。cronから実行しているのはシェルスクリプトで、その中からrubyスクリプトを呼んでいます。
以前はこれできちんと動いていたのですが、apt-get upgradeでwheezyにしてからきちんと動かなくなってしまいました。直接の原因は内部で使用していたtwitter gemで、これの最新版をgem install twitterでインストールし、最新版のgemで動くようにスクリプトを修正することで、普通にシェルからtwitter2tdiary.shを呼べば正常に動作するようになりました。
でも、それでもcronから実行すると失敗してしまいます。
きっと環境変数とかその辺りがおかしいんだろうと思いつつ、そもそも仕組みがわかっていないのでその辺を確認してみたい。
とりあえずdebianでは/var/lib/gems以下にgemが置かれるらしい。確かにあった。
では、普通に実行するとこれが使われているという事なのだろう。rubyのバージョンは?
1.9。upgradeまえは1.8だったはずで、ruby1.8だから/var/lib/gems/1.8を使う…という訳じゃないのだろうか?「"/var/lib/gems/1.8" “/var/lib/gems/1.9”」でググってみる。
ここによるとやっぱりruby1.8とruby1.9が共存している環境では/var/lib/gems/1.8と/var/lib/gems/1.9が両方存在しているようだ。よくわからないけど以下のコマンドを打ってみる
に加えて
なんてのも表示された。
としてみる。
となった。gem1.9.1を実行しているのにrubygems-update-1.8.24がインストールされるって、これは正しいのだろうか?
この段階で/var/lib/gems/1.9.1は存在しないこの段階ですでに何かおかしいのかな。
よくわからないけどこの段階でgem1.9.1ってコマンドがあるのなら……思って以下のコマンドを打ってみた
するとなにやらインストールされた。
でも、/var/lib/gems/1.9.1はできてない……。
むむ。これが原因なのか?これはどこで設定されてるんだ。
調べたら~/.bash_profileで設定されてた。これは自分で書いたのか?とりあえず消してみる。
gem1.9.3なんてのがあるのにも気がついたので
なにやらうまく行ってる予感。でも、/var/lib/gems/1.9.3なんてのはできてない。
おや、そんなところにインストールされたんですか。
ってことで別の場所に入ってるのでこれでいいのかもしれない。これで様子をみてみよう……。