У меня проблема с подсчетами сеансов в Mixpanel для моего приложения Rails. В принципе, я запускаю событие отслеживания mixpanel «Session» каждый раз, когда кто-то посещает страницу с внешнего URL-адреса (а не mydomain.com).Неполадка отслеживания сеанса в рельсах
Так что у меня что-то вроде этого в моем application_controller.rb, прежде чем крючок:
def count_session
referral = request.referer
root_url = Figaro.env.root_uri
### If there's a referral and it includes the root domain, then don't
### track because it's the same session
if referral && referral.include?(root_url)
puts "!!!! NOT TRACKED !!!!!"
else
puts "!!!!! TRACKED #{id} !!!!!!"
mixpanel.track("Session", "ID" => current_user.id, "Version" => Figaro.env.ab_version)
end
end
Для отладки, я могу видеть «!!!!! ГУСЕНИЧНЫЙ 4 !!!!!!» в моей консоли при посещении страницы с моей учетной записи (идентификатор пользователя: 4). Но когда я нахожусь в MixPanel, на панели инструментов нет события.
Я могу получить событие сеанса для входа в журнал, если я посещу в браузере инкогнито (с id: nil) ИЛИ, если я нахожусь в инкогнито, то явным образом войдите в свою учетную запись. Но цель состоит в том, чтобы регистрировать событие в любое время, когда пользователь посещает внешний URL.
Мои другие мероприятия в mixpanel работают нормально. Любая идея, почему событие сеанса не будет срабатывать в этом случае? Как я должен продолжить эту отладку?
Спасибо!
Edit: Я использую Mengpaneel для реализации рубинового, вот моя установка:
Инициализаторы/mengpaneel.rb:
Mengpaneel.configure do |config|
config.token = Figaro.env.mixpanel_token
end
application_controller.rb:
before_action :setup_mixpanel
before_action :count_session
def setup_mixpanel
return unless user_signed_in?
mengpaneel.setup do
mixpanel.identify(current_user.id)
mixpanel.people.set(
"ID" => current_user.id,
"$email" => current_user.email,
"$created" => current_user.created_at,
"$last_login" => current_user.current_sign_in_at
)
end
end
FYI: 'current_user? id = current_user.id: id = nil' может быть лучше выражено 'id = current_user? current_user.id: nil'. Еще лучше, вы можете избавиться от тернарного оператора и использовать 'mixpanel.track (« Session »,« ID »=> current_user.id)', поскольку 'track', похоже, принимает значение« nil ». – Mohamad
@Mohamad, но если нет current_user, то не будет current_user.id вывести ошибку? –
Да, это было бы - пожалуйста, проигнорируйте последнюю часть моего комментария, но более ранний совет по-прежнему касается упрощения тернарного оператора. : D – Mohamad