Как использовать переменную среды для идентификатора отслеживания Google Analytics в части Haml - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь добавить тег Google Analytics в свое веб-приложение, которое запускает Ruby на Rails.

Я хотел бы развернуть один и тот же код в нескольких средах: разработка, подготовка, производство, и настроить разные идентификаторы отслеживания Google Analytics с помощью переменной среды в каждом из этих экземпляров. Каждая из моих сред настроена на отдельный домен, поэтому я настроил отдельные свойства в Google Analytics и установил новую переменную среды (GOOGLE_ANALYTICS_TRACKING_ID) на серверах.

Я хотел бы использовать частичное Файл Haml для хранения тега Google Analytics и использования переменной среды. Я нашел пример в « Не могу заставить Google Analytics работать над проектом rails », но я не знаю, как передать переменную окружения в.

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 является динамическим c для каждой среды и включает переменную среды?

1 Ответ

0 голосов
/ 14 апреля 2020

Вот одно из возможных решений:

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 / layout / base. html .haml

%html
  %head
    = stylesheet_link_tag    'application', media: 'all'
    = javascript_include_tag 'application'

    = render 'stubs/ga', :env => ENV
  %body
    = yield

Обратите внимание, что я явно передаю ENV в качестве аргумента для вызова render. Я придумал это решение, когда составлял вопрос и повторял его, используя другой синтаксис. Это работает, но я не уверен, что это лучшее решение. Любые другие рекомендации о том, как достичь этой цели, а именно развернуть один и тот же код в разных экземплярах и отдельно отслеживать аналитику?

...