在Vagrantfiles中是否有引用变量的样式指南?

时间:2017-05-24 20:15:39

标签: vagrant

当我查看Vagrant docs https://www.vagrantup.com/docs/networking/forwarded_ports.html时,它给出了一个这样的例子:

Vagrant.configure("2") do |config|
  config.vm.network 'forwarded_port', guest: 2003, host: 12003, protocol: "tcp"
  config.vm.network 'forwarded_port', guest: 2003, host: 12003, protocol: "udp"
end

但是,以下似乎也是有效的:

单引号

Vagrant.configure("2") do |config|
  config.vm.network :forwarded_port, guest: 2003, host: 12003, protocol: "tcp"
  config.vm.network :forwarded_port, guest: 2003, host: 12003, protocol: "udp"
end

冒号前缀

{{1}}

这些语法的区别是什么?当你有变量like in puppet时,是否应该使用双引号?

冒号前缀语法是什么?这很令人困惑,因为该行上的其他关键字后缀有冒号。

是否有Vagranfiles的风格指南?

2 个答案:

答案 0 :(得分:2)

免责声明:以下内容是有意表达的(我对此持保留意见)。但是所有样式指南也是如此。不要陷入思考背后的深层思考,只需做出选择并尝试保持一致即可。

是否有样式指南Vagrantfiles?

简短地:Use this style guide

长答案:似乎没有任何官方的Vagrant风格指南,但是由于它是Ruby编程语言,我们可以看看官方的Ruby风格指南...哦,等等,实际上Ruby也没有!这个可能是最受欢迎的一个,所以坚持下去:

rubocop-hq/ruby-style-guide

我应该使用什么:单引号('word'),双引号("word")或符号(:word)?

简短地:使用双引号。

长答案:样式指南在单引号和双引号上是矛盾的:it offers you choice A and B,因此请坚持使用Vagrant文​​档:

  • 默认情况下使用双引号:

    node.vm.provision "shell", inline: "echo hello from node #{i}"

  • 如果双引号是字符串的一部分,请使用单引号。此snippet from Vagrant documentationstyle guide一致:

    config.winssh.export_command_template = '$env:%ENV_KEY%="%ENV_VALUE%"'

什么是冒号前缀语法?

简短地说:冒号标记为symbol see Ruby documentation)。

此答案进一步扩展:What is the colon operator in Ruby?

何时应在Vagrantfile中使用symbols

短暂地:(实际上)从不

长答案:坚持使用双引号保持一致,除非您在Vagrant解析Vagrantfile时遇到可变性或性能问题。有关Ruby中符号和字符串的性能和可变性的更多信息:The Difference Between Ruby Symbols and Strings

答案 1 :(得分:0)

Vagrantfile是一个ruby脚本,所以它遵守ruby规则。

使用双引号的主要优点之一是您需要string interpolation