大学生がプログラマーを目指すはなし

ruby, python, AIの話が多いです

Rake taskでコマンドラインから複数引数を指定する方法

1. taskを作成してみる。

$rake g task file_name

file_nameにてきとうな名前をつける。
すると、rails/lib/task/ に以下のようなファイルが作成される。

file_name.rake
namespace :file_name do
end

 2. taskに処理を書いてみる。

file_name.rake
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つの方法があります。

  1. taskを複数定義する。
  2. 環境変数を複数定義する。

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で説明したところが右側に追いやられてしまうんですよね...

何か良い方法があれば別ですが...

 

 

gsub!を使いこなす

gsubとは

文字列の中で正規表現のパターンにマッチした部分をすべて指定の文字列に置換します。

ここで、!(ビックリマーク)が付いているものを破壊的なメソッドと呼び、その場で完全に置き換えて値が変わることを言います。

基本的な使い方

greet = "My name is ひかる"

html.gsub!("My name is", "私の名前は")

print greet

出力 → 私の名前はひかる

 My name is 私の名前は に変わる。

 

Terminalの基本的なこと

ターミナル操作で必要になるコマンドは全て環境変数で設定されている。

/bin, /usr/bin ここのディレクトリにpathを通したコマンドがある。

ちなみに、このようなコマンドは自分で作ったり消したりできる。しかし、初心者のうちはあまりいじらない方が良い。あまりわかっていない状況で操作すると、大変なことにもなる。

 

基本的なコマンド

$ env
環境変数の一覧を見ることができる。
$ echo
→echo $USERなどと打つと中身が確認できる便利なコマンド
$ curl http://example.com -o foo.html
→URLからファイルをダウンロードできる。
$ open
→とにかく開くコマンドだが、引数を.とした場合、カレントディレクトリをfinderで開ける。
$ brew search tree
brewはsearch, install, uninstallといったサブコマンドと言われる引数を最初に指定します。macで使う。