crontab を構成し、cron ジョブをスケジュールするために、everyone gem を使用しています。私のconfig/schedule.rbファイルには次の内容があります:
set :environment, "test"
set :output, {:error => "/var/log/cron_error.log", :standard => "/var/log/cron_log.log"}
every 1.minutes do
runner 'TickerSymbol.update_prices'
end
現在、TickerSymbol.update_prices メソッドで Rails.logger.debug ... を呼び出しています。また、schedule.rb ファイルで、スケジュールされた cron ジョブからの出力を /var/logs/*.log に書き込もうとしていることに注意してください。これは機能していません。S3 または Beanstalk 管理コンソール経由でログを表示すると、/var/log ディレクトリから他のログ ファイルが表示されますが、cron ログ ファイルは表示されません。
私の .ebextensions/[アプリ名].config ファイルには次の内容が含まれています。
sources:
/aws-scripts-mon: http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts.zip
option_settings:
- option_name: AWS_SECRET_KEY
value: XXX
- option_name: AWS_ACCESS_KEY_ID
value: XXX
- option_name: BUNDLE_WITHOUT
value: "production:development"
- option_name: RACK_ENV
value: test
- option_name: RAILS_ENV
value: test
- option_name: RAILS_SKIP_MIGRATIONS
value: true
container_commands:
01-setupcron:
command: echo "*/5 * * * * root perl /aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --aws-access-key-id $AWS_ACCESS_KEY_ID --aws-secret-key $AWS_SECRET_KEY > /dev/null" > /etc/cron.d/cwpump
02-changeperm:
command: chmod 644 /etc/cron.d/cwpump
03-changeperm:
command: chmod u+x /aws-scripts-mon/mon-put-instance-data.pl
04-rake_routes:
command: rake routes
05-whenever:
command: whenever -c
command: whenever -i [app name] --update-crontab
command: whenever -f
command: crontab -l
leader_only: true
以下は、git aws.push を使用したデプロイ中に生成されたログ ファイルの内容です。このログ エントリは、いつでも crontab ファイルが期待どおりに生成されていることを確認します。
2013-04-06 14:50:37,469 [DEBUG] Running command 05-whenever
2013-04-06 14:50:37,470 [DEBUG] Generating defaults for command 05-whenever
<<<
2013-04-06 14:50:37,639 [DEBUG] Running test for command 05-whenever
2013-04-06 14:50:37,654 [DEBUG] Test command output:
2013-04-06 14:50:37,654 [DEBUG] Test for command 05-whenever passed
2013-04-06 14:50:37,671 [INFO] Command 05-whenever succeeded
2013-04-06 14:50:37,671 [DEBUG] Command 05-whenever output: # Begin Whenever generated tasks for: [app name]
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /bin/bash -l -c 'cd /var/app/ondeck && script/rails runner -e production '\''TickerSymbol.update_prices'\'' >> /path/to/my/cron_log.log 2>&1'
# End Whenever generated tasks for: [app name]
何か不足していますか?現在の構成に基づいて、/var/log/cron_log.log ファイル内の TickerSymbol.update_prices からのログ メッセージが表示されることを期待しています。ただし、これらの設定がエラーを生成しているという兆候は見られず、cron ジョブが実行されているという兆候も見られません。