crontab経由で実行する場合、プログラムが動作する場所を注意する必要があります。
解決するためには以下の手順で原因の切り分けをお願いいたします。
* * * * * /Users/kuujoujoutarou/.rbenv/shims/ruby /Users/kuujoujoutarou/twitter_bot/tweet.rb
(1) 手で動かす
ターミナルから以下のコマンドで動作するか確認してください
% cd
% /Users/kuujoujoutarou/.rbenv/shims/ruby /Users/kuujoujoutarou/twitter_bot/tweet.rb
(2) 上記で動く場合、実行する場所を変更して確認してください
% cd /
% /Users/kuujoujoutarou/.rbenv/shims/ruby /Users/kuujoujoutarou/twitter_bot/tweet.rb
もし (1) が動作する、(2) が動作しない場合
tweets.txt がプログラムが実行されている場所に存在しないことが原因と思われます。
File.open("tweets.txt", "r") do |bot|
~~~~~~~~~~ 相対パス
対策は
(1) tweets.txt ファイルをフルパスで指定する
// ファイルをフルパスで指定する
File.open("/Users/kuujoujoutarou/twitter_bot/tweets.txt", "r") do |bot|
もしくは
(2) crontab 経由で実行する前に tweets.txt の存在する場所に移動してから実行
下記のtweets.shファイルを /Users/kuujoujoutarou/ 配下に設置してください
#!/bin/sh
cd /Users/kuujoujoutarou/twitter_bot
/Users/kuujoujoutarou/.rbenv/shims/ruby tweet.rb
実行権限を付与すること
ファイルの権限を確認する
% ls -lt tweets.sh
-rw-r--r-- 1 xxx xxx 1864 4 2 18:29 tweets.sh
実行権限がない場合は chmod で権限を付与
% chmod a+x tweets.sh
% ls -lt tweets.sh
-rwxr-xr-x 1 xxx xxx 1864 4 2 18:29 tweets.sh
crontabに登録する
* * * * * /Users/kuujoujoutarou/tweets.sh