Rake taskでコマンドラインから複数引数を指定する方法
- 1. taskを作成してみる。
- 2. taskに処理を書いてみる。
- 3. rake taskを確認してみる。
- 4. 実行してみる。
- 5. Rake taskでコマンドラインから複数引数を指定する方法
- 6. どっちがいいの?
1. taskを作成してみる。
$rake g task file_name
file_nameにてきとうな名前をつける。
すると、rails/lib/task/ に以下のようなファイルが作成される。
namespace :file_name do
end
2. taskに処理を書いてみる。
namespace :file_name do
task practice do
print "hello"
end
end
これで保存する。
3. rake taskを確認してみる。
$ rake -vT
# 出力結果
...
rake file_name:practice
...
こう出力されれば作成されている。
4. 実行してみる。
$ rake file_name:practice
# 出力結果
hello
ここまでくればとりあえず完成である。
5. Rake taskでコマンドラインから複数引数を指定する方法
5-1. 概要
rakeコマンド実行時にコマンドラインから複数の引数を入力として受け取るには主に2つの方法があります。
- taskを複数定義する。
- 環境変数を複数定義する。
5-2. taskを複数定義する。
例えば、
task :practice, 'firstname', 'lastname'
task :practice do |i, args|
puts "My name is #{args['first_name']} #{args['last_name']}"
end
として、実行してあげると
$ rake file_name:practice[Ryotaro,Kubota]
# 出力結果
My name is Ryotaro Kubota
とできる。
5-3. 環境変数を複数定義する
例えば、
task :practice do |t|
puts "My name is #{ENV['first_name']} #{ENV['last_name']}"
end
として、実行してあげると
$ rake file_name:practice first_name=Ryotaro last_name=Kubota
# 出力結果
My name is Ryotaro Kubota
とできる。
6. どっちがいいの?
まぁどっちでもいいと思ってしまいますが、強いていうなら環境変数の方が好きかもしれないです。
なぜならtaskを繋げてたくさん書いていくとrake -vTで確認したときに、横にたくさん連なって色々見辛くなります(笑)
$ rake -vT
# 出力結果
...
rake file_name:practice,'sample1','sample2','sample3','sample4'...
...
こうなっちゃうとdescで説明したところが右側に追いやられてしまうんですよね...
何か良い方法があれば別ですが...