vagrant 多机设置中的机器命名约定
Machine naming convention in vagrant multi-machine setup
我开始开发多机 vagrant 设置。我注意到 vagrant 文件中用于定义机器名称的两种命名约定方法。第一种方法是在机器名称前加一个“冒号”。第二个是用双引号引起来的机器名称。这行如
config.vm.define :boxname .....
或
config.vm.define "boxname" .....
我在 github 中看到了两种方式。是否有规定 method/reason 或者这只是偏好?
不同的“约定”与 Vagrant 文件实际上是 Ruby 片段这一事实有关。在Ruby
"foo"
是一个 string 对象,类似于其他语言中的字符串。但是,与大多数其他语言相比 Ruby 字符串对象是可变的。
:foo
是一个 symbol 对象。符号提供了一种有效的方式来引用具有人类可读名称的事物,而无需在幕后拖拽这个通常冗长的名称。具有相同名称的符号始终引用相同的符号对象 - 即使它们在代码的不同位置被引用。
Vagrant 支持使用其中一种,但对我而言,在此用例中使用符号感觉更自然。此外,如果您使用字符串,Ruby 解释器必须逐个字符比较整个字符串以确定它们是否相同,而比较符号归结为比较指针。
我开始开发多机 vagrant 设置。我注意到 vagrant 文件中用于定义机器名称的两种命名约定方法。第一种方法是在机器名称前加一个“冒号”。第二个是用双引号引起来的机器名称。这行如
config.vm.define :boxname .....
或
config.vm.define "boxname" .....
我在 github 中看到了两种方式。是否有规定 method/reason 或者这只是偏好?
不同的“约定”与 Vagrant 文件实际上是 Ruby 片段这一事实有关。在Ruby
"foo"
是一个 string 对象,类似于其他语言中的字符串。但是,与大多数其他语言相比 Ruby 字符串对象是可变的。:foo
是一个 symbol 对象。符号提供了一种有效的方式来引用具有人类可读名称的事物,而无需在幕后拖拽这个通常冗长的名称。具有相同名称的符号始终引用相同的符号对象 - 即使它们在代码的不同位置被引用。
Vagrant 支持使用其中一种,但对我而言,在此用例中使用符号感觉更自然。此外,如果您使用字符串,Ruby 解释器必须逐个字符比较整个字符串以确定它们是否相同,而比较符号归结为比较指针。