156
138

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rake タスクの作り方(引数を複数設定してみる)

Last updated at Posted at 2015-08-07

やったこと

  • 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
156
138
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
156
138

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?