2012-05-12 10 views
26

Rubyでは "<< - "とは何ですか?たとえば

code = <<-EOH 
    bundle install 
    bundle exec unicorn -c /etc/unicorn.cfg -D 
EOH 

このコードは何をしますか? <<-とは何ですか?

+5

Symbolhoundは、Googleが処理できない構文を検索する方法の1つです。 –

答えて

34

これはheredocと呼ばれています。エスケープする必要なく、一重引用符または二重引用符を含む複数行の文字列を定義する簡単な方法。

詳細はhereを参照してください。

heredocsを使用して、大量のコードを定義することがよくあります。 Some編集者はこれについて知っており、そこでは構文を強調表示できます(言語を指定した場合)。見て:

strings vs heredocs

+0

私はシンタックスハイライトが好きで、今日初めて学びました。 –

2

heredocのように見えます。 -は、終了区切り文字の前にある空白を無視できるようにします。

シンプルなGoogle検索で私にthisと答えました。

+1

Heredocs *はGoogleに苦労するでしょう。あなたが以前に遭遇したことがないなら、コンセプトと実装はどちらも変です。 –

+0

私はheredocのことを聞いたことがなかったので、Googleは無駄でした。時には未知のシンボルに名前をつけるのが難しい場合があります – fontno

+0

bash/shellの '<< - END'は前の空白を取り除きますが、Rubyではそれほど単純ではありません。新しい構文を必要とする一方で、機能パリティのビット。 – dragon788

0

あなたはシェフのレシピでは、このように1つのブロックに複数のコマンドを渡すことができルビー<<~ENDの新しいヒアドキュメント構文もあり

bash 'Install ftppwd' do 
    code <<-EOH 
    mkdir #{ftppwd_dir} 
    chmod 775 #{ftppwd_dir} 
    chgrp #{batch_id} #{ftppwd_dir}/* 
    chown #{batch_id} #{ftppwd_dir}/* 
    EOH 
関連する問題