例)
rails runner Tasks::AlertTask.execute
これを利用します。
crontabへの登録はcrontab -eで手書きすることもできるが、モジュール管理もできるのでrubyで書く方法をためします。
・バッチモジュール作成
> vim config/application.rb config.autoload_paths += %W(#{config.root}/lib) # 追記するバッチクラス作成
> vim lib/tasks/alert_task.rb class Tasks::AlertTask def self.execute puts "Hoge" end end
ちゃんと作成出来たかを確認する。
> rails runner Tasks::AlertTask.execute Hoge
・スケジュール登録(crontabへの登録手順)
> vim Gemfile gem 'whenever', :require => false # 追記 > bundle install
config/schedule.rbを作成
> wheneverize .
> vim config/schedule.rb set :output, "log/cron_log.log" # ログファイルパス set :environment, :development # 実行環境 every 1.day, :at => '5:00 am' do # 毎日5時に実行 runner "Tasks::AlertTask.execute" # 実行するタスク(lib/tasks/alert_task.rbのexecuteメソッドを実行) end
crontab登録
> bundle exec whenever -update-crontab
crontab確認
> crontab -l
もし、実行されなかった場合。
パターン1:
bin/rails:7: undefined method `require_relative' for main:Object (NoMethodError)
と表示される場合はrubyが複数存在する可能性があります。下記にて不要なrubyを消しましょう。
> yum remove ruby
パターン2:
/usr/bin/env: ruby: No such file or directory
と表示される場合は下記を実施。
> vim ~/.bashrc export PATH=/usr/local/bin:$PATH