rakeタスクに引数を与える

はじめに

Rakeタスクに引数を与えて実行したい、と思うことは割と頻繁にあると思います。しかしながら、Rakeタスクの引数ってどういうのだっけ? と疑問に思ったところで、調べるのも面倒になり、最終的には環境変数でいいや、というのがRails開発あるあるかと存じます。

実装

Rakeタスクに対する引数は、コマンドに続くカッコで行います。

$ bundle exec rake import:json[path/to/json]

これに対して、タスクの定義は以下の通りです。

複数ある場合は、その数だけ続けます。

[第一引数,第二引数,第三引数 …]といった形です。ちなみにコンマの前後にスペースを入れるとエラーになります。引数と引数の間はコンマのみ、常にギチギチにしておく必要がございます。

$ bundle exec rake import:jsons[path/to/json,path/to/json]

可変長の引数を利用したい場合は、argsをto_aします。

$ bundle exec rake import:jsons[path/to/json,path/to/json]

ちょっと変な感じがしないでもないですが、この辺りは慣れなのだと思います。

Rails

Posted by poison