Rails 6 に whenever をインストールする
はじめに
Rails 6 に whenever をインストールするためのメモ。
wheneverは、Rails でタスクを定期実行するためのRuby gemです。
環境
$ hostnamectl status
Static hostname: ---
Icon name: computer-container
Chassis: container
Machine ID: ---
Boot ID: ---
Virtualization: lxc
Operating System: Ubuntu 20.04.2 LTS
Kernel: Linux 5.4.0-67-generic
Architecture: x86-64$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]$ bundle exec rails version
Rails 6.1.4インストール
Gemfile に追加。
$ vim Gemfile追記内容は以下。
gem 'whenever', require: falseBundle を利用して、 whenever をインストール。
$ bundle installスケジュール登録
schedule.rbを生成。
$ bundle exec wheneverize .
[add] writing `./config/schedule.rb'
[done] wheneverized!schedule.rbを下記内容に編集。
set :output, File.join(Whenever.path, "log", "cron.log")
rails_env = ENV['RAILS_ENV'] || :development
env :PATH, ENV['PATH']
env :GEM_PATH, ENV['GEM_PATH']
every 1.minute do
rake 'example_task:run'
endタスク作成
rakeタスクを作成。
$ bundle exec rails generate task example_task
Running via Spring preloader in process 3029495
create lib/tasks/example_task.rake生成したexample_task.rakeを編集。
$ vim lib/tasks/example_task.rake生成したマイグレーションファイルを編集。
namespace :example_task do
desc 'タスクを実行する'
task run: :environment do
puts "Run task"
end
endタスク実行
タスクを実行。
$ bundle exec rake example_task:run正常に完了すると下記実行結果を表示。
Run taskCronに反映
構文チェックを実施。
$ bundle exec whenever構文に問題がなければ下記実行結果を表示。
* * * * * /bin/bash -l -c 'cd /home/ubuntu/projects/api && RAILS_ENV=development bundle exec rake example_task:run --silent >> /home/ubuntu/projects/api/log/cron.log 2>&1'
## [message] Above is your schedule file converted to cron syntax; your crontab file was not updated.
## [message] Run `whenever --help' for more options.CRONに設定を反映。
$ bundle exec whenever --update-crontab設定内容を確認。
$ crontab -l
# Begin Whenever generated tasks for: /home/ubuntu/projects/api/config/schedule.rb at: 2021-10-11 15:08:38 +0900
* * * * * /bin/bash -l -c 'cd /home/ubuntu/projects/api && RAILS_ENV=development bundle exec rake example_task:run --silent >> /home/ubuntu/projects/api/log/cron.log 2>&1'
# End Whenever generated tasks for: /home/ubuntu/projects/api/config/schedule.rb at: 2021-10-11 15:08:38 +0900CRONの設定を削除。
$ bundle exec whenever --clear-crontab参考サイト
About
関西在住のエンジニア
言語: Ruby・Go・PHP
フレームワーク: RoR・Gin
趣味: 自作PC