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

B S*_*ven 9 ruby-on-rails heroku ruby-on-rails-3

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

注意这是不同的Rails.application.class.parent_name.

Rails.application.class.parent_name 在应用程序中定义.

在Rails中工作3.

hak*_*nin 14

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

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

heroku config:add APP_NAME=<myappname> --app <myappname>
Run Code Online (Sandbox Code Playgroud)

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

heroku labs:enable user-env-compile -a myapp
Run Code Online (Sandbox Code Playgroud)

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

ENV["APP_NAME"] # '<myappname>'
Run Code Online (Sandbox Code Playgroud)

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

  • 也许检查你的heroku gem版本或安装heroku toolbelt.或者查看文档/联系heroku.https://devcenter.heroku.com/categories/labs请务必分享有用的内容! (2认同)

Cam*_*ike 2

Heroku实际上默认在环境中设置了一个URL变量

app_name = ENV['URL'].split(".").first
Run Code Online (Sandbox Code Playgroud)

此处引用: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