NOTO

Rakeの引数

 Date:2018-10-17 03:04:27 +0900
 Categories: TECHNOLOGY

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さんがいい感じにしてくれてたみたいですね。

[embed]https://docs.ruby-lang.org/ja/latest/class/Rake=3a=3aTaskArguments.html[/embed]

ソースはこちら

[embed]https://docs.ruby-lang.org/ja/latest/class/Rake=3a=3aTaskArguments.html[/embed]

これを見てる感じ

def_method\_missing_(_sym_, *_args_)
lookup(_sym_.to_sym)
end

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

def_[]_(_index_)
lookup(_index_.to_sym)
end

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

Tweet