这意味着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