【问题标题】:What is <<-CMD in the Capistrano source?Capistrano 源代码中的 <<-CMD 是什么?
【发布时间】:2014-12-18 17:40:17
【问题描述】:

在 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。 &lt;&lt;- 是运营商吗?还是 &lt;&lt;-CMD&lt;&lt;-DESC 奇怪命名的常量?或者这在普通 Ruby 中没有任何意义,而是 Capistrano DSL 的一个特性?

【问题讨论】:

标签: ruby-on-rails ruby capistrano


【解决方案1】:

这种语法称为heredoc 或here 文档(因为它包含在“就在这里”),并且确实是一种编写长的、多行不带引号的字符串的方法。它不是特定于 Capistrano 的,而是 Ruby 的一部分(以及许多其他语言,可以追溯到旧的 UNIX shell)。如果您想了解更多信息,Ruby docs 拥有所有详细信息。

【讨论】:

  • 谢谢。 .compact 是怎么回事?
  • 这是来自 Capistrano 的 String.compact。如果我没记错的话,它会折叠重复的空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 2012-01-01
相关资源
最近更新 更多