10
2

More than 3 years have passed since last update.

rake taskで可変長引数を扱う

Last updated at Posted at 2018-03-08

to_aメソッドを使えば良い。

namespace :hoge do
  desc 'Sample'
  task :fuga, ['piyo'] => :environment do |task, args|
    p args.to_a
    p args
  end
end
$ bundle exec rake 'hoge:fuga[1,2,3,4]'
["1", "2", "3", "4"]
{:piyo=>"1"}

rake taskの引数はHashと説明されることがあるけど、実際はTaskArgumentsでこいつのto_aメソッドで引数の値をすべて取得できる。

ググっていいやり方見つからなかったからリファレンス眺めてたら普通にあった。

追記 2020-06-01

.extras メソッドの方が適切な場合が多そう。名前付きパラメータにアサインされなかった分の引数を配列が返る(つまり上記の例だと ["2", "3", "4"] が返る)

本当に今更だけど公式ドキュメント読んでたら書いてあった...

10
2
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
10
2