在capistrano 2.15.5 deploy:assets source中,我看到的代码如下:
desc <<-DESC
[internal] This task will set up a symlink to the shared directory \
... more
DESC
run <<-CMD.compact
rm -rf #{latest_release}/public/#{assets_prefix} &&
... more
CMD
这种语法究竟发生了什么?它看起来像是一种不带引号的字符串写法,类似于%q。 <<-
是运营商吗?或者<<-CMD
和<<-DESC
奇怪地命名常量?或者这在普通的Ruby中没有任何意义,而是Capistrano DSL的一个特性?
答案 0 :(得分:6)
这种语法称为heredoc或here文档(因为它包含在“此处”),实际上是一种编写没有引号的长多行字符串的方法。它不是特定于Capistrano,而是Ruby(以及许多其他语言)的一部分,可以追溯到旧的UNIX shell。如果您想了解更多信息,Ruby docs可以获得所有细节。