Skip to content

Instantly share code, notes, and snippets.

@jmolivas
Created April 29, 2014 15:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmolivas/11403587 to your computer and use it in GitHub Desktop.
Save jmolivas/11403587 to your computer and use it in GitHub Desktop.
Adding customizable configuration to Vagrantfile
require "yaml"
parameter_file = "./parameters.yml"
parameters = Array.new(0)
if File.exists?(parameter_file)
parameters = YAML::load_file(parameter_file)
end
# Apply configuration values if available
config.vm.network "private_network", ip: (parameters.include?'network_ip') ? parameters['network_ip'] : "192.168.9.10"
config.vm.synced_folder "./www", "/var/www", id: "webroot", type: (parameters.include?'synced_folder_type') ? parameters['synced_folder_type'] : "nfs"
virtualbox.customize ["modifyvm", :id, "--memory", (parameters.include?'memory') ? parameters['memory'] : "512"]
@jmolivas
Copy link
Author

Al final ha quedó así:

require "yaml"

params_file = "parameters.yml"
params = {}

if File.exists?(params_file)
  params = YAML::load_file(params_file)
end

config.vm.network "private_network", ip: params.fetch('network_ip', "192.168.9.10")
config.vm.synced_folder "./www", "/var/www", id: "webroot", type: params.fetch('synced_folder_type', "nfs")
virtualbox.customize ["modifyvm", :id, "--memory", params.fetch('memory', "512")]

@antillas21
Copy link

En un ejercicio extra, puedes reducir esto así:

require "yaml"

params_file = "parameters.yml"
params = File.exists?(params_file) ? YAML::load_file(params_file) : {}

config.vm.network "private_network", ip: params.fetch('network_ip', "192.168.9.10")
config.vm.synced_folder "./www", "/var/www", id: "webroot", type: params.fetch('synced_folder_type', "nfs")
virtualbox.customize ["modifyvm", :id, "--memory", params.fetch('memory', "512")]

De nuevo, la explicación:

  • no hay por qué checar si params_file está definido, porque tú controlas el flow y lo acabas de declarar :P
  • no hay por qué inicializar params = { } antes de hacer algo con él.
  • cuando declaras params, puedes darle un fallback value con ||, traduciéndose como params es lo que resulte de abrir via YAML este archivo, o un Hash vacío

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment