2011-09-20 49 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中设置一个变量。

相关问题