在Heroku上运行Rails时如何获取应用程序名称?

这意味着app-name.heroku.com。

请注意,这与Rails.application.class.parent_name不同。

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变量可能不存在,但您可以随时添加环境变量“app name”,除非您试图一起避免这种方法。

更新2:事实上,另一个明显但有限的方法是从请求变量中获取域,但这会限制您到控制器。 http://guides.rubyonrails.org/action_controller_overview.html#the-request-object

ENV['URL']的解决方案仅在请求期间有效。

因此,如果您需要知道请求之外的应用程序ID,您可以设置这样的配置变量

 heroku config:add APP_NAME= --app  

并启用实验室function ,允许您在编译期间使用它们

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

现在我可以在这里找到我的应用名称:

 ENV["APP_NAME"] # '' 

如果您想根据应用程序的名称或ID加载不同的配置文件(例如使用oauth凭据),这很方便。

 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' 

如果您在每个应用程序中运行不同的环境,则可以在staging.rbproduction.rb设置变量。