Rakeの引数

Rakeの引数って args.target_date みたいに取れるなと思っていて、ふと気になったので、

desc 'testタスク'
task :test_task, ['target_date'] => :environment do |task, args|
binding.pry
end

してみた。で、以下のようにしてみたら

$ rake test_task[1]
[2] pry(main)> args.target_date
=> "1"
[3] pry(main)> args['target_date']
=> "1"
[4] pry(main)> args[:target_date]
=> "1"

みたいになった。ハッシュでアクセスする方法に加えてドットでも取れる。

# 一見ハッシュのように見えて
[5] pry(main)> args
=> {:target_date=>"1"}
# Rakeの引数用のクラスだった
[6] pry(main)> args.class
=> Rake::TaskArguments

Rake::TaskArgumentsさんがいい感じにしてくれてたみたいですね。
https://docs.ruby-lang.org/ja/latest/class/Rake=3a=3aTaskArguments.html
ソースはこちら
https://docs.ruby-lang.org/ja/latest/class/Rake=3a=3aTaskArguments.html
これを見てる感じ

def method_missing(sym, *args)
lookup(sym.to_sym)
end

↑でドットの呼び出しをしていそう。

def [](index)
lookup(index.to_sym)
end

ハッシュ的な呼び出しはこっちでシンボルにして呼び出していそう。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください