分析(如果在生产站点上,而不是本地或 heroku 子域)
这个问题是关于让分析脚本在这三个环境之一中运行。
- mysite.heroku.com
- mysite-staging.heroku.com
- mysite.com - 这是我希望它运行的唯一一个。
这就是我计划的布局,但欢迎任何建议。
在我的助手中
def render_analytics
if local_request? || #on a Heroku subdomain
false
else
true
end
end
在我的布局中,
<%= render 'shared/analytics' if render_analytics %>
render_analytics
返回一个布尔值:如果在 mysite.com 上,则返回一个布尔值:true
;如果在 local_request?
上,则返回 false
> 或 Heroku 子域(例如:mysite.heroku.com ||
mysite-staging.heroku.com)
那么我如何才能知道它是否来自 Heroku。
This question is about getting an analytics script to run in one of these three environments.
- mysite.heroku.com
- mysite-staging.heroku.com
- mysite.com - this is the only one I want it to run on.
This is how I plan to lay it out, but any suggestions are welcome.
In my helper
def render_analytics
if local_request? || #on a Heroku subdomain
false
else
true
end
end
In my layout
<%= render 'shared/analytics' if render_analytics %>
render_analytics
returns a boolean: true
if on mysite.com, false
if a local_request?
or on a Heroku subdomain (ex: mysite.heroku.com ||
mysite-staging.heroku.com)
So how can I find out if it is coming from Heroku.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用主机名:
更简洁的解决方案是在部署期间在您的环境中设置一个常量,以便您知道您是否在 Heroku 上。由于 Heroku 部署过程在让您处理配置文件方面相当不透明,因此您可以让您的方法记住结果,这样您就不会在每次渲染视图时都进行系统调用。
我只是做了类似的事情,使用一种检查数据库适配器的方法来解释我的开发环境和 Heroku 之间的差异。这是我的
lib/adapter.rb
:请注意,除此之外,您还必须更改
application.rb
,以便将lib
添加到您的自动加载路径:Use
hostname
:A cleaner solution is to set a constant in your environment during deployment that allows you to know whether you are on Heroku. As the Heroku deploy process is pretty opaque in terms of letting you dork around with config files, you might have your method memoize the result so you aren't doing a system call each time you render a view.
I just did something similar with a method that checks the database adapter to account for differences between my development environment and Heroku. Here's my
lib/adapter.rb
:Note that in addition to this, you have to change
application.rb
such thatlib
is added to your autoload path: