rake:task をcontrolloerから叩く場合の引数の渡し方
WEB画面で何か操作をした時にバッチを実行したい場合など、controllerからrake:taskを叩きたい場合がある
1 2 3 |
require 'rake' Rails.application.load_tasks Rake::Task['hogeName:getFuga'].execute |
で呼び出せる
タスクに引数を渡す場合
・引数を定義する
・環境変数として渡す
の二通りの方法がある
それぞれの書き方
■引数を定義する
controller側
1 2 |
Rails.application.load_tasks Rake::Task['hogeName:getFuga'].execute(id: 1001) |
task側
1 2 3 4 5 |
namespace :hoge do task :hello do |t, args| puts "Hello, #{args['firstname']} #{args['lastname']}" end end |
■環境変数として渡す
controller側
1 2 3 |
Rails.application.load_tasks ENV['id'] = 1001 Rake::Task['hogeName:getFuga'].execute |
task側
1 2 3 4 5 |
namespace :hoge do task getFuga: :environment do |t| p ENV['id'] end end |
参考
http://qiita.com/tamano/items/385350ef664e07fe7655
http://www.ownway.info/Ruby/rake/arguments