2011-09-20 15 views

Respuesta

1

Heroku realidad establece una variable de URL en el entorno por defecto

app_name = ENV['URL'].split(".").first 

referencia aquí: http://devcenter.heroku.com/articles/config-vars y http://ididitmyway.heroku.com/past/2010/11/9/sinatra_settings_and_configuration/

actualización: realidad la variable URL puede no estar allí por defecto, pero siempre se puede agregar una variable de entorno "nombre de la aplicación" a priori, a menos que intentes evitar ese enfoque todos juntos.

actualización 2: actualización, el otro enfoque, obvio pero limitante, sería tomar el dominio de la variable de solicitud, pero esto lo limita a su controlador. http://guides.rubyonrails.org/action_controller_overview.html#the-request-object

+1

Comprobé la configuración y no hay ninguna variable con el nombre de la aplicación en ella. Sí, establecer una configuración es un enfoque. –

+0

esto no siempre funciona, porque podría haber usado una ortografía diferente para su aplicación cuando la registró ... p. test-app en lugar de test_app – Tilo

1
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'') 
=> "test-app" 

que es el nombre de la aplicación Rails, ya que fue escrito cuando lo hizo 'carriles nueva app-name'

Usando esto, se podía hacer esto:

class << Rails.application 
    def name 
    Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'') 
    end 
end 

Rails.application.name 
=> 'test-app' 
+1

En realidad, ese es el nombre de la cookie –

14

El la solución con ENV['URL'] solo funcionará durante las solicitudes.

Así que si usted necesita saber el ID de aplicación fuera de una solicitud, de establecer una variable de configuración como esta

heroku config:add APP_NAME=<myappname> --app <myappname> 

y habilitar lab feature que permite el uso de ellos durante compilar

heroku labs:enable user-env-compile -a myapp 

Y ahora tengo el nombre de mi aplicación disponible aquí:

ENV["APP_NAME"] # '<myappname>' 

Esto es práctico si Desea cargar diferentes archivos de configuración (por ejemplo, con credenciales de oauth) según el nombre o id de la aplicación.

+0

'labs: enable' no es un comando heroku. ¿Alguna idea? – baash05

+2

Tal vez revise su versión de joya heroku o instale el cinturón de herramientas heroku. O mira los documentos/contacto heroku. https://devcenter.heroku.com/categories/labs ¡Asegúrese de compartir lo que ayudó! – hakunin

+0

Funcionó para mí sin el comando heroku labs. – abrocks

0

Si está ejecutando en diferentes entornos en cada aplicación por this, puede simplemente establecer una variable en staging.rb o production.rb.

Cuestiones relacionadas