2012-05-12 195 views
26

例如:Ruby中的“<< - ”是什么意思?

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

这是什么代码呢? <<-叫什么?

+5

Symbolhound是搜索谷歌无法处理的语法的一种方法。 –

回答

34

它被称为heredoc。一种简单的方法来定义多行字符串,其中可能包含单引号或双引号,而无需转义它们。例如,

查看更多here

通常你会使用heredocs来定义大块的代码。 Some编辑知道这一点,并可以突出显示你的语法(如果你指定语言)。看:

strings vs heredocs

+0

我喜欢语法突出和今天学习,也是第一次。 –

2

在我看来像heredoc。 -允许结尾分隔符忽略它之前的空格。

一个简单的Google搜索给了我this

+1

Heredocs *会对谷歌造成痛苦。如果你以前从未遇到过它,这个概念和实现都很奇怪。 –

+0

我从来没有听说过heredoc所以谷歌没有结果。有时很难把名字放到未知的符号中 – fontno

+0

bash/shell中的'<< - END'会去掉前面的空格,但是在Ruby中并不那么简单,请参阅2.3.x中的更改,在需要一个新的语法的同时还有一些特性奇偶性 – dragon788

0

可以在厨师食谱在一个块传递多个命令,这样

bash 'Install ftppwd' do 
    code <<-EOH 
    mkdir #{ftppwd_dir} 
    chmod 775 #{ftppwd_dir} 
    chgrp #{batch_id} #{ftppwd_dir}/* 
    chown #{batch_id} #{ftppwd_dir}/* 
    EOH