如何在 Haml 部分中为 Google Analytics 跟踪 ID 使用环境变量
How to use an environment variable for Google Analytics tracking ID in a Haml partial
我正在尝试将 Google Analytics 标记添加到我的 Web 应用程序,该应用程序在 Rails 上运行 Ruby。
我想将相同的代码部署到多个环境、开发、暂存、生产,并在每个实例中通过环境变量配置不同的 Google Analytics 跟踪 ID。我的每个环境都设置在不同的域上,因此我在 Google Analytics 中设置了单独的属性,并在服务器上设置了一个新的环境变量 (GOOGLE_ANALYTICS_TRACKING_ID
)。
我想使用部分 Haml 文件来保存 Google Analytics 标记并使用环境变量。我在“”中找到了一个例子,但我不知道如何将环境变量传入
app/views/stubs/_ga.haml:
:javascript
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', GOOGLE_ANALYTICS_TRACKING_ID_ENV_VAR, 'auto');
ga('send', 'pageview');
app/views/layouts/base.html.haml:
%html
%head
= stylesheet_link_tag 'application', media: 'all'
= javascript_include_tag 'application'
= render 'stubs/ga'
%body
= yield
请注意,我将 GOOGLE_ANALYTICS_TRACKING_ID_ENV_VAR
作为占位符包含在内。我尝试了一些表示,但无法使跟踪代码正常工作。 Google Tag Assistant Chrome 扩展报告在页面上找不到任何标签,我在浏览器控制台中看到语法错误。
为了确保 Google Analytics 跟踪代码对于每个环境都是动态的并引入环境变量,构建部分代码和渲染调用的最佳方式是什么?
这是一种可能的解决方案:
app/views/stubs/_ga.haml
:javascript
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '#{env['GOOGLE_ANALYTICS_TRACKING_ID']}', 'auto');
ga('send', 'pageview');
app/views/layouts/base.html.haml
%html
%head
= stylesheet_link_tag 'application', media: 'all'
= javascript_include_tag 'application'
= render 'stubs/ga', :env => ENV
%body
= yield
请注意,我明确将 ENV
作为调用 render
的参数传入。我在撰写问题并使用不同的语法进行迭代时想出了这个解决方案。它有效,但我不确定它是否是最佳解决方案。关于如何实现此目标的任何其他建议 objective,即将相同的代码部署到不同的实例并分别跟踪分析?
我正在尝试将 Google Analytics 标记添加到我的 Web 应用程序,该应用程序在 Rails 上运行 Ruby。
我想将相同的代码部署到多个环境、开发、暂存、生产,并在每个实例中通过环境变量配置不同的 Google Analytics 跟踪 ID。我的每个环境都设置在不同的域上,因此我在 Google Analytics 中设置了单独的属性,并在服务器上设置了一个新的环境变量 (GOOGLE_ANALYTICS_TRACKING_ID
)。
我想使用部分 Haml 文件来保存 Google Analytics 标记并使用环境变量。我在“
app/views/stubs/_ga.haml:
:javascript
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', GOOGLE_ANALYTICS_TRACKING_ID_ENV_VAR, 'auto');
ga('send', 'pageview');
app/views/layouts/base.html.haml:
%html
%head
= stylesheet_link_tag 'application', media: 'all'
= javascript_include_tag 'application'
= render 'stubs/ga'
%body
= yield
请注意,我将 GOOGLE_ANALYTICS_TRACKING_ID_ENV_VAR
作为占位符包含在内。我尝试了一些表示,但无法使跟踪代码正常工作。 Google Tag Assistant Chrome 扩展报告在页面上找不到任何标签,我在浏览器控制台中看到语法错误。
为了确保 Google Analytics 跟踪代码对于每个环境都是动态的并引入环境变量,构建部分代码和渲染调用的最佳方式是什么?
这是一种可能的解决方案:
app/views/stubs/_ga.haml
:javascript
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '#{env['GOOGLE_ANALYTICS_TRACKING_ID']}', 'auto');
ga('send', 'pageview');
app/views/layouts/base.html.haml
%html
%head
= stylesheet_link_tag 'application', media: 'all'
= javascript_include_tag 'application'
= render 'stubs/ga', :env => ENV
%body
= yield
请注意,我明确将 ENV
作为调用 render
的参数传入。我在撰写问题并使用不同的语法进行迭代时想出了这个解决方案。它有效,但我不确定它是否是最佳解决方案。关于如何实现此目标的任何其他建议 objective,即将相同的代码部署到不同的实例并分别跟踪分析?