Вызов Mixpanel API только в рабочей среде Rails

В настоящее время я использую mixpanel с "mixpanel" по умолчанию для аналитики и имею некоторые вызовы настроены в моих контроллерах. Я бы хотел, чтобы эти вызовы выполнялись только в производственной среде. Лучший способ сделать это примерно так для каждого вызова:

@mixpanel.track_event("Job Accepted", {:user=> current_user.id}) if RAILS_ENV == 'production'

Кажется излишним, но я изо всех сил пытаюсь придумать лучшее решение. Любая помощь будет здорово!


person Dave G    schedule 28.02.2011    source источник


Ответы (3)


У вас есть правильная идея. Хотя вы можете использовать:

Rails.env.production?

вместо. (См. Rails.env и RAILS_ENV)

person Winfield    schedule 01.03.2011

Старый вопрос, но вот мой метод. Замените потребителя Mixpanel по умолчанию (который отправляет в свой API) на что-то более полезное для тестирования. В нашем случае мы просто выходим из системы. Это в инициализаторе, таком как mixpanel.rb.

if Rails.env.production?
  MIXPANEL = Mixpanel::Tracker.new(ENV['MIXPANEL_TOKEN'])
else
  MIXPANEL = Mixpanel::Tracker.new(ENV['MIXPANEL_TOKEN']) do |type, message|
     Rails.logger.debug("Mixpanel Request: #{type}, #{message}")
  end
end
person Ross    schedule 03.01.2015

Это то, что вы ищете, нашел в вики Gem:

https://github.com/zevarito/mixpanel/wiki/Disable-Mixpanel-tracking-in-desired-environments-with-Rails

person gabriel    schedule 07.08.2012
comment
Нет причин запоминать/кешировать значение Rails.env.production? Это просто сравнение строк под прикрытием. - person Winfield; 08.08.2012
comment
Вы совершенно правы! Спасибо за исправление, я обновил ответ. - person gabriel; 10.08.2012