使用 json 作为 vagrantfile 对象的 properties\values
Use json as properties\values for vagrantfile object
流浪文件:
require 'json'
file = File.read('blueprint.json')
azure_data = JSON.parse(file)
Vagrant.configure('2') do |config|
config.vm.define "master" do |node|
node.vm.provider :azure do |azure, override|
azure_data.each do |hash|
hash.each do |key, value|
azure[key] = value
end
end
azure.vm_name = "somename"
end
end
end
vagrant up
给出了这个错误:
Microsoft Azure Provider:
* The following settings shouldn't exist: []
此外,如果我将 puts('something')
添加到 hash.each
循环中,它不会为 JSON 文件的每个 属性 输出一次,而是输出 6 次 (¿? ) 每个 属性
blueprint.json:
{
"admin_username":"someuser",
"location":"northeurope",
"resource_group_name":"resourcegroup",
"tcp_endpoints":"5000",
"virtual_network_name":"vnetname",
"vm_size":"Standard_DS1"
}
您的 JSon 文件已经是一个 JSon 对象,因此当您阅读它时,您直接拥有键值对。您可以执行以下操作来检查
require 'json'
file = File.read('blueprint.json')
azure_data = JSON.parse(file)
azure_data.each do |key, value|
p key
p value
end
所以在阅读你的 JSon 时你可以跳过 hash
部分,ruby 已经知道这是一个散列。
那么要动态设置对象属性,需要使用send方法
require 'json'
file = File.read('blueprint.json')
azure_data = JSON.parse(file)
Vagrant.configure('2') do |config|
config.vm.define "master" do |node|
node.vm.provider :azure do |azure, override|
azure_data.each do |key, value|
azure.send("#{key}=", value)
end
azure.vm_name = "somename"
end
end
end
看来这毕竟是可能的,感谢 this。
config.vm.define "master" do |node_dotnet|
node_dotnet.vm.provider :azure do |azure, override|
azure_data.each do |key, value|
azure.instance_variable_set("@#{key}", value)
end
azure.vm_name = "master"
end
end
伙计,Ruby 语法很糟糕
ps。出于某种原因,并非所有这些方法都有效。
流浪文件:
require 'json'
file = File.read('blueprint.json')
azure_data = JSON.parse(file)
Vagrant.configure('2') do |config|
config.vm.define "master" do |node|
node.vm.provider :azure do |azure, override|
azure_data.each do |hash|
hash.each do |key, value|
azure[key] = value
end
end
azure.vm_name = "somename"
end
end
end
vagrant up
给出了这个错误:
Microsoft Azure Provider:
* The following settings shouldn't exist: []
此外,如果我将 puts('something')
添加到 hash.each
循环中,它不会为 JSON 文件的每个 属性 输出一次,而是输出 6 次 (¿? ) 每个 属性
blueprint.json:
{
"admin_username":"someuser",
"location":"northeurope",
"resource_group_name":"resourcegroup",
"tcp_endpoints":"5000",
"virtual_network_name":"vnetname",
"vm_size":"Standard_DS1"
}
您的 JSon 文件已经是一个 JSon 对象,因此当您阅读它时,您直接拥有键值对。您可以执行以下操作来检查
require 'json'
file = File.read('blueprint.json')
azure_data = JSON.parse(file)
azure_data.each do |key, value|
p key
p value
end
所以在阅读你的 JSon 时你可以跳过 hash
部分,ruby 已经知道这是一个散列。
那么要动态设置对象属性,需要使用send方法
require 'json'
file = File.read('blueprint.json')
azure_data = JSON.parse(file)
Vagrant.configure('2') do |config|
config.vm.define "master" do |node|
node.vm.provider :azure do |azure, override|
azure_data.each do |key, value|
azure.send("#{key}=", value)
end
azure.vm_name = "somename"
end
end
end
看来这毕竟是可能的,感谢 this。
config.vm.define "master" do |node_dotnet|
node_dotnet.vm.provider :azure do |azure, override|
azure_data.each do |key, value|
azure.instance_variable_set("@#{key}", value)
end
azure.vm_name = "master"
end
end
伙计,Ruby 语法很糟糕
ps。出于某种原因,并非所有这些方法都有效。