Pregunta

Tengo el siguiente código en /config/initializers/chargify.rb

Chargify.configure do |c|
  c.subdomain = 'example'
  c.api_key   = '123xyz'
end

Pero tengo diferentes configuraciones para el desarrollo y la producción.

Así que, ¿cómo podría tener un conjunto diferente de valores de las variables basados ??en el medio ambiente?

¿Fue útil?

Solución

Yo crearía un archivo de configuración para esto (config/chargify.yml):

development:
  subdomain: example
  api_key: 123abc
production:
  subdomain: production_domain
  api_key: 890xyz

Y a continuación, cambiar su inicializador de esta manera:

chargify_config_file = File.join(Rails.root,'config','chargify.yml')
raise "#{chargify_config_file} is missing!" unless File.exists? chargify_config_file
chargify_config = YAML.load_file(chargify_config_file)[Rails.env].symbolize_keys

Chargify.configure do |c|
  c.subdomain = chargify_config[:subdomain]
  c.api_key   = chargify_config[:api_key]
end

Otros consejos

¿Qué hay de:

Chargify.configure do |c|
  if Rails.env.production?
    # production settings
    c.api_key   = '123xyz'
  else
    # dev. and test settings
    c.api_key   = '123xyz'
  end
end

Mejor aún, usted puede reducir la duplicación con el bloque case:

Chargify.configure do |c|
  c.subdomain = 'example'
  c.api_key   = case
    when Rails.env.production?
      '123xyz'
    when Rails.env.staging?
      'abc123'
    else
      'xyz123'
    end
end

Si usted va a necesitar diferentes ajustes para diferentes ambientes, lo mejor es ponerlos en el archivo respectivo entorno, como config/environments/development.rb.

Si insiste absolutamente de ponerlos en un inicializador (pero por favor no lo hace, eso es lo que los archivos de entorno son para), puede utilizar una declaración case e inspeccionar el valor de Rails.env, que devuelve el nombre del entorno actual como una cadena.

Yo sugeriría que usted utilice las variables env

Chargify.configure do |c|
  c.subdomain = ENV['APP_SUBDOMAIN']
  c.api_key = ENV['API_KEY']
end

y establecer las variables apropiadas en ~ / .bashrc o ~ / .profile pero nota: esto se debe establecer para un mismo usuario como ejemplo rieles se opareting sucesivamente. P.ej. Implementar usuario especificado en Capistrano es que usted utilizó para implementaciones

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