やったこと
- rake タスクをジェネレート
- 引数付きのrakeタスクを作成
※ rakeタスクの作り方を毎回忘れるのでメモ!
rake タスクファイルをジェネレートする
$ rails g task task_name
task_name
に任意の名前をつける。
今回はそのままtask_name
をそのまま使用する。
lib/task/
配下に以下のようなファイルが作成される。
task_name.rake
namespace :task_name do
end
タスクの処理を追加してみる。(引数付き)
次にブロック内に実行する処理を追加する。
task_name.rake
namespace :task_name do
desc "実行処理の説明"
task :create, ['name'] => :environment do |task, args|
p task
p args
end
end
rake タスクの確認をする。
$ rake -vT
# 出力結果
...
rake task_name:create[name] # 実行処理の説明
...
実行してみる
$ rake task_name:create[hoge]
# 出力結果
<Rake::Task task_name:create => [environment]>
{:name=>"hoge"}
複数の引数を与えたい場合。
task_name.rake
namespace :task_name do
desc "実行処理の説明"
task :create, ['name', 'description'] => :environment do |task, args|
p task
p args
end
end
実行してみる
$ rake task_name:create[hoge,foo]
# 出力結果
<Rake::Task task_name:create => [environment]>
{:name=>"hoge", :description: => "foo"}
上記で確認できるように、引数はHash
で渡されるので、あとは以下のようにHashとして扱えばOK!
または、'args.name'のような形でも呼び出し可能。
task_name.rake
namespace :task_name do
desc "実行処理の説明"
task :create, ['name', 'description'] => :environment do |task, args|
# どちらも同じ値を呼び出す。
p args[:name]
p args.name
end
end