Rubyで文字列をテンプレートに沿って展開するメソッドが便利

こんにちは。

Rubyで事前に準備したテンプレートのプレースホルダーに沿って文字列を展開することもあるかと思います。
そのようなときにRubyの Kernel.%メソッドを使用するといい感じに展開出来ます。
C言語のsprintfのように展開できて便利です。

例えば以下のようにするとプレースホルダーを入れたところに文字列が展開されます。

s = '%s World!'
s % 'Hello'
# => "Hello World!"

複数のプレースホルダーを入力した場合は後ろに配列を置くことで順番にプレースホルダーに入り展開されます。

s = '%s and %s are %f yen'
s % ['apple', 'grape', 500]
# => "apple and grape are 500.000000 yen"

値にハッシュを渡すことでプレースホルダーに名前をつけておくことが出来るようになります。
その場合はプレースホルダーを%<>で囲うか%{}で囲えます。
%<> の場合は後ろにフォーマットを指定します。

s = 'Your name is %<first_name>s %<last_name>s, %<year>d years-old'
s % { first_name: 'Taro', last_name: 'Tanaka', year: 20 }
# => "Your name is Taro Tanaka, 20 years-old"

%{}の場合はフォーマットを指定する必要はありません。そのかわりRubyのフォーマットがそのまま出力値に影響を与えます。

s = 'Your name is %{first_name} %{last_name}, %{year} years-old'
s % { first_name: 'Taro', last_name: 'Tanaka', year: 20 }
# => "Your name is Taro Tanaka, 20 years-old"

結構便利なメソッドなので覚えておいて損はないなと思いました!
フォーマットなどはsprintfのメソッドに沿うので必要であればドキュメントを見てください。