¿Cuál es la mejor manera de almacenar información de configuración específica del proyecto en tareas de Ruby Rake?

StackOverflow https://stackoverflow.com/questions/5331257

  •  26-10-2019
  •  | 
  •  

Pregunta

Tengo tareas de rastrillo para obtener la base de datos de producción del servidor remoto, etc. Siempre son las mismas tareas, pero la información del servidor cambia por proyecto. Tengo el código aquí: https://gist.github.com/868423 En la última tarea, obtengo un error @Local_DB_DIR_PATH = NIL.

No creo que quiera usar las variables de entorno de shell porque no quiero configurarlas cada vez que uso el rastrillo o abro una nueva carcasa.

¿Fue útil?

Solución

Pegue la configuración en un archivo YAML y léelo así:

require 'yaml'
config = YAML.load("config.yaml") # or wherever

$remote_host = config['remote_host']
$ssh_username = config['ssh_username']
# and so on

O simplemente puede leer un gran hash de configuración:

$config = YAML.load("config.yaml")

Tenga en cuenta que estoy usando globales aquí, no variables de instancia, por lo que no hay posibilidad de sorprenderme por el alcance variable.

config.yaml se vería así:

--- 
remote_host: some.host.name
ssh_username: myusername
other_setting: foo
whatever: bar

Tiendo a mantener una muestra config.yaml.sample registrada con el cuerpo principal del código que tiene un ejemplo pero la configuración no de trabajo para todo lo que puedo copiar a la configuración no versionada. A algunas personas les gusta mantener su configuración. Yaml se registró en una rama en vivo en el servidor en sí, para que esté versión, pero nunca me he molestado con eso.

Otros consejos

Debería usar Capistrano para esto, puede usar Mulitsage o simplemente separar la configuración del host en una tarea, el ejemplo Capistrano se vería así:

task :development do
  server "development.host"
end

task :backup do
  run "cd #{current_path}; rake db:dump"
  download "remote_path", "local_path"
end

Y llámalo así:

cap development backup
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top