#ヒアドキュメントとは
ヒアドキュメントとは一言で言うと、
『文字列をシェルスクリプトやプログラミング言語に埋め込むための方法』
改行や空白などが書いた通りに適用されるため、複数行に渡る長い文字列を作成する場合に
スッキリ書くことができる。
どんな時に使うのか
・シェルスクリプトに別のスクリプトを埋め込む
・プロトタイプ時のモックデータとして
etc
#使い方
###基本
data = <<EOS
test
テスト
123
EOS
識別子は慣習的にEOFやEOSが使われるが、終わりと始まりで一致していれば何を使用しても良い。
###インデント
data = <<EOF
test
テスト
123
EOF
=> SyntaxError: can't find string "EOF" anywhere before EOF
dataの前にインデントをつけると
エラーになる
インデントを付けたい場合は
識別子の前に「-」をつける。
data = <<-EOF
test
テスト
123
EOF
またドキュメント内にインデントをつけると空白と認識されてしまう。
先頭のインデントを無視させるには、識別子の前に「~」をつける
data = <<EOF
test
テスト
123
EOF
=> " test\n テスト\n 123\n"
data = <<~EOF
test
テスト
123
EOF
=> "test\nテスト\n123\n"
###式展開
式展開も可能。
name = "TAKE"
country = "日本"
data = <<EOF
私の名前は#{name}です
#{country}から来ました。
EOF
=> "私の名前はTAKEです\n日本から来ました。\n"
識別子をシングルクオーテーションで囲むと式展開は無効になる
(文字列として認識される)
name = "TAKE"
country = "日本"
data = <<'EOF'
私の名前は#{name}です
#{country}から来ました。
EOF
=> "私の名前は\#{name}です\n\#{country}から来ました。\n"
###その他
ヒアドキュメント内の文字列に対してメソッドを実行できる
data = <<EOF.upcase
test
ruby
EOF
=> "TEST\nRUBY\n"
複数のヒアドキュメントを組み合わせることもできる
data = <<EOF1, <<EOF2
ヒアドキュメント1
EOF1
ヒアドキュメント2
EOF2
=> ["ヒアドキュメント1\n", "ヒアドキュメント2\n"]
#参考
https://www.sejuku.net/blog/14283#i-10
https://tomoyuki65.com/how-to-use-heredoc-in-ruby/