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

opt*_*lic 4 vagrant

当我查看 Vagrant 文档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
Run Code Online (Sandbox Code Playgroud)

但是,以下内容似乎也有效:

单引号

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
Run Code Online (Sandbox Code Playgroud)

冒号前缀

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
Run Code Online (Sandbox Code Playgroud)

这些语法有什么区别?只有当您有像 puppet这样的变量时才应该使用双引号吗?

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

Vagranfiles 有风格指南吗?

And*_*son 6

免责声明:以下是自以为是(只是我对此的看法)。但所有的风格指南也是如此。不要陷入对这背后的推理的深思熟虑中,只要做出你的选择并尝试保持一致。

是否有风格指南 Vagrantfiles?

很快:使用这个风格指南

长答案:好像没有官方的 Vagrant 风格指南,但既然是 Ruby 编程语言,我们可以看看官方的 Ruby 风格指南……哦,等等,其实 Ruby 也没有!这个可能是最受欢迎的,所以坚持下去:

rubocop-hq/ruby-style-guide

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

简而言之:使用双引号。

长答案:样式指南在单引号和双引号问题上是矛盾的:它为您提供 A 和 B 选择,因此请坚持使用 Vagrant 文档:

  • 默认使用双引号:

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

  • 如果双引号是字符串的一部分,请使用单引号。Vagrant 文档中的这个片段样式指南一致:

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

什么是冒号前缀语法?

简而言之:冒号标记一个symbol请参阅 Ruby 文档)。

这个答案扩展了一点:Ruby 中的冒号运算符是什么?

symbols什么时候应该在 Vagrantfile 中使用?

很快:(实际上)从不

长答案:坚持使用双引号以保持一致性,除非您在 Vagrant 解析您的 Vagrantfile 时确实遇到了可变性或性能问题。更多关于 Ruby 中符号和字符串的性能和可变性:Ruby 符号和字符串之间的区别