在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.rb
或production.rb
设置变量。
- Rails应用程序在Heroku上崩溃但在本地运行正常 – >“状态从开始变为崩溃”
- Heroku rails 3.1 app – 在本地编译资产与在slug编译期间编译资产
- Rails 5 Heroku部署错误:ExecJS :: ProgramError:SyntaxError:意外的令牌:name(autoRegisterNamespace)
- Rails asset_host,cloudfront和heroku
- Heroku – “我们很抱歉,但出了点问题”
- 如何以编程方式生成类似Heroku的子域名?
- 当我将我的应用程序推送到Heroku时,为什么我收到错误500“我们很抱歉,但出了点问题”?
- Heroku上的免费SSL安全证书?
- 如何在Heroku中更改列类型?