這意味着app-name.heroku.com。請注意,這與Rails.application.class.parent_name
不同。如何在Heroku上運行Rails時獲得應用程序名稱?
Rails.application.class.parent_name
在本申請中定義。
Rails中工作3
這意味着app-name.heroku.com。請注意,這與Rails.application.class.parent_name
不同。如何在Heroku上運行Rails時獲得應用程序名稱?
Rails.application.class.parent_name
在本申請中定義。
Rails中工作3
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
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
=> "test-app"
這是Rails應用程序的名稱,因爲它的時候,你卻拼寫爲「軌道新的應用程序名」
利用這一點,你可以這樣做:
class << Rails.application
def name
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
end
end
Rails.application.name
=> 'test-app'
其實,這就是cookie的名字 –
的使用ENV['URL']
的解決方案只能在請求期間使用。
所以,如果你需要知道的請求外的應用程序ID,您我們設置一個配置變量,這樣
heroku config:add APP_NAME=<myappname> --app <myappname>
而且使lab feature,可讓您使用它們時編譯
heroku labs:enable user-env-compile -a myapp
而且現在我有我的應用程序名稱在這裏:
ENV["APP_NAME"] # '<myappname>'
這是方便的,如果你想要根據應用程序的名稱或ID加載不同的配置文件(比如oauth憑證)。
如果您在每個應用程序的不同環境中運行每個this,則可以在staging.rb
或production.rb
中設置一個變量。
我檢查了配置,並且沒有帶app-name的變量。是的,設置配置是一種方法。 –
這並不總是奏效,因爲當您在應用程序中使用不同的拼寫時。 test-app代替test_app – Tilo