2012-09-09 11 views

Respuesta

4

No creo que puedas = /.

Una solución alternativa que utilizamos con nuestras aplicaciones Rails es ssh (ey ssh) para EngineYard y crear un archivo en vim /data/your_app_name/shared/config/exports.rb. Este archivo puede ser algo como esto:

ENV["AWS_ACCESS_KEY_ID"] = "your key" 
ENV["AWS_SECRET_ACCESS_KEY"] = "your secret" 
ENV["AWS_BUCKET"] = "your bucket" 

Luego, en config/boot.rb que requieren el archivo:

require File.expand_path('./exports', File.dirname(__FILE__)) 

Esto no es ni bonito, ni esfuerzo. Sin embargo, le permite usar secretos en su aplicación que no debe controlar en el control de la fuente.

+1

Definitivamente puede utilizar el chef para hacerlo, por lo que su respuesta no es la indicada. – WattsInABox

+0

Estoy votando esta respuesta y es infinitamente mejor que la tuya ... porque no ofreces una alternativa. –

9

nos encontramos con el mismo problema y pidió EngineYard algún tipo de asistencia. Jim Neath de EY regresó con la siguiente respuesta:

Desafortunadamente, el pasajero no recibe las variables de entorno del sistema. Lo que hay que hacer es crear un contenedor de rubí que define las variables de entorno y lancha de pasajeros utilizando esto, como se describe aquí:

http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/

os he creado una receta de encargo del cocinero básico que hacer precisamente esto :

https://github.com/jimneath/ey-cloud-recipes/tree/master/cookbooks/passenger_env_vars

Usted tendrá que actualizar el siguiente archivo con su entorno variables:

/ey-cloud-recipes/blob/master/cookbooks/passenger_env_vars/templates/default/env.custom.erb

+2

Pensé que debería hacerles saber a todos que hay un error en esas recetas personalizadas (presumiblemente, ya que son muy viejas). default.rb debe ser: 'if ['app_master', 'app', 'solo']. include? (node ​​[: instance_role])' en lugar de 'if ['app_master', 'app', 'solo']. include? (node ​​[: role]) ' – WattsInABox

1

Si desea ejecutar una tarea rake (es decir, trabajo cron) que necesita estas variables ambientales, almacenar las variables en /data/my_app/shared/config/env.custom

source /data/my_app/shared/config/env.custom && cd /data/my_app/current/ && bundle exec rake my_rake_task 
1

también estaba usando Heroku anteriormente ahora se trasladó a Engineyard. Así es como obtengo mis variables ENvironemnt en Heroku Agregué gem figaro. Esta gema básicamente necesita el archivo application.yml en el directorio app/config. Cuando se inicializa la aplicación Rails, se ejecuta y carga el par de valores clave establecido en el formato YAML en la memoria. En HerokuFigaro tiene la opción de establecer el contenido de application.yml.

$ figaro heroku:set -e production 

Sin embargo, en Engineyard necesitamos copiar manualmente el application.yml usando SCP opción de EY paquete y lo demás se hará por figaro.

Primero incluya la gema figaro en gemfile e instale la gema.
Luego tenemos que usar engineyard-hooks para copiar el archivo /data/[your_app]/shared/config/application.yml en /data/[your_app]/current/config/application.yml. tenemos que utilizar before_restart gancho

# inside your project repo create a 'deploy' folder and 
# inside deploy/before_restart.rb paste the following code with or without modifications 
# This file is executed everytime after deploy just before your app restarts 
on_app_servers_and_utilities do 
    # Copy the yaml files from `shared/config` to `current/config` 
    ['application.yml'].each do |file_name| 
    run "ln -nfs #{config.shared_path}/config/#{file_name} #{config.release_path}/config/#{file_name}" 
    end 
end 

confirmar los cambios y empujar a tu repositorio GitHub o en algún lugar.

Hasta aquí, no existe el archivo /data/[your_app]/shared/config/application.yml. Ahora use el siguiente comando para copiar el archivo desde el local a los servidores

# This copies the application.yml to every instance like app_master, app_slave, utilities, database, etc  
$ ey scp config/application.yml HOST:/data/[your_app_name]/shared/config/ -e app_environment --all 

Ahora puede implementar su aplicación y obtener todas las variables de entorno.

Nota: Debe invocar el comando anterior para copiar el archivo al servidor cada vez que arranque el entorno. Significa que si detiene la puesta en escena (por ejemplo) y después de un tiempo de inicio, debe invocar el comando anterior

+0

https://cbabhusal.wordpress.com/2015/07/22/engineyard-ruby-on-rails-setting-environment-variables-at-once/ – illusionist

Cuestiones relacionadas