这意味着app-name.heroku.com。
请注意,这与Rails.application.class.parent_name
不同。
Rails.application.class.parent_name
在应用程序中定义。
使用Rails 3。
答案 0 :(得分:14)
ENV['URL']
解决方案仅在请求期间有效。
因此,如果你需要知道请求之外的app 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凭据),这很方便。
答案 1 :(得分:1)
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”,除非您试图一起避免这种方法。 / p>
更新2:实际上,另一个明显但有限的方法是从请求变量中获取域名,但这会限制您的控制器。 http://guides.rubyonrails.org/action_controller_overview.html#the-request-object
答案 2 :(得分:1)
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'
答案 3 :(得分:0)
如果您在this每个应用中的不同环境中运行,则可以在staging.rb
或production.rb
中设置变量。