Как вы получаете имя приложения при запуске Rails на Heroku? - PullRequest
9 голосов
/ 20 сентября 2011

Это означает app-name.heroku.com.

Обратите внимание, что это отличается от Rails.application.class.parent_name.

Rails.application.class.parent_name, определенного в приложении.

Работав Rails 3.

Ответы [ 4 ]

14 голосов
/ 11 января 2013

Решение с ENV['URL'] будет работать только во время запросов.

Поэтому, если вам нужно знать идентификатор приложения вне запроса, вы устанавливаете переменную конфигурации, подобную этой

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

, и включаете лабораторную функцию , которая позволяет вам использоватьих во время компиляции

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

И теперь у меня есть имя моего приложения, доступное здесь:

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

Это удобно, если вы хотите загрузить другой файл конфигурации (скажем, с учетными данными oauth) на основеимя или идентификатор приложения.

1 голос
/ 18 октября 2012
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
=> "test-app"

это имя приложения Rails, как оно было написано, когда вы делали 'rails new app-name'

Используя это, вы можете сделать это:

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

Rails.application.name
=> 'test-app'
1 голос
/ 20 сентября 2011

Heroku фактически устанавливает переменную URL в среде по умолчанию

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

Ссылка здесь: http://devcenter.heroku.com/articles/config-vars и http://ididitmyway.heroku.com/past/2010/11/9/sinatra_settings_and_configuration/

обновление: на самом деле переменная URL может отсутствовать по умолчанию, но вы всегда можете добавить переменную среды «имя приложения» априори, если только вы не пытались избежать такого подхода все вместе.

обновление 2: действительно, другой, очевидный, но ограничивающий подход, заключается в извлечении домена из переменной запроса, но это ограничивает вас вашим контроллером.http://guides.rubyonrails.org/action_controller_overview.html#the-request-object

0 голосов
/ 23 февраля 2013

Если вы работаете в разных средах в каждом приложении на это , вы можете просто установить переменную в staging.rb или production.rb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...