2011-09-20 48 views

回答

1

Heroku的實際默認設置一個URL變量的環境中

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

此處引用:http://devcenter.heroku.com/articles/config-varshttp://ididitmyway.heroku.com/past/2010/11/9/sinatra_settings_and_configuration/

更新:實際的URL變量可能不在默認情況下,但您可以隨時添加環境變量「應用程序名稱」,除非您試圖一起避免這種方法。

更新2:確實,另一個明顯但有限的方法是從請求變量中截取域,但是這限制了您的控制器。 http://guides.rubyonrails.org/action_controller_overview.html#the-request-object

+1

我檢查了配置,並且沒有帶app-name的變量。是的,設置配置是一種方法。 –

+0

這並不總是奏效,因爲當您在應用程序中使用不同的拼寫時。 test-app代替test_app – Tilo

1
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' 
+1

其實,這就是cookie的名字 –

14

的使用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憑證)。

+0

'labs:enable'不是一個heroku命令。有什麼想法嗎? – baash05

+2

也許檢查你的heroku寶石版本或安裝heroku工具欄。或者查看文檔/聯繫人heroku。 https://devcenter.heroku.com/categories/labs一定要分享幫助! – hakunin

+0

在沒有heroku實驗室的情況下爲我工作。 – abrocks

0

如果您在每個應用程序的不同環境中運行每個this,則可以在staging.rbproduction.rb中設置一個變量。

相關問題