Railsアプリにcronジョブを実装しようとしていますが、cronはまったく初めてです。Rails 3のgemはいつでも使用しています。
これらは私が行った手順です:
Gemfile 内
gem 'whenever', :require => false
それから走った、
wheneverize .
そして、これは私の config/schedule.rb がどのように見えるかです:
set :environment, :development
set :path, "/home/pc/Workspace/pep1"
every 1.minutes do
runner "Demo.update_time_slot"
command "rm -rf /tmp/cache"
end
私のデモモデルには以下が含まれています:
class << self
def update_time_slot
.......
end
end
ターミナルでコマンドを実行し、
whenever --update-crontab pep1
whenever -i
しかし、cronファイルが実行されていないようです。しかし、Rails コンソールで Demo.update_time_slot を実行すると、問題なく動作します。
crontab -l の出力は次のとおりです。
# Begin Whenever generated tasks for: pep1
* * * * * /bin/bash -l -c 'cd /home/pc/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\'''
* * * * * /bin/bash -l -c 'rm -rf /tmp/cache'
# End Whenever generated tasks for: pep1
# Begin Whenever generated tasks for: /home/pc/Workspace/pep1/config/schedule.rb
* * * * * /bin/bash -l -c 'cd /home/pc/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\'''
* * * * * /bin/bash -l -c 'rm -rf /tmp/cache'
# End Whenever generated tasks for: /home/pc/Workspace/pep1/config/schedule.rb
「grep CRON /var/log/syslog」の出力は次のとおりです。
Oct 12 22:37:01 IdeaPad-S400 CRON[10845]: (pc) CMD (/bin/bash -l -c 'rm -rf /tmp/cache')
Oct 12 22:37:01 IdeaPad-S400 CRON[10846]: (pc) CMD (/bin/bash -l -c 'cd /home/mona/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\''')
Oct 12 22:37:01 IdeaPad-S400 CRON[10847]: (pc) CMD (/bin/bash -l -c 'cd /home/mona/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\''')
Oct 12 22:37:01 IdeaPad-S400 CRON[10852]: (pc) CMD (/bin/bash -l -c 'rm -rf /tmp/cache')
私は物事がうまくいかないところを理解していません。誰でもこれで私を助けることができますか?
本当に感謝します。
ありがとう。