2016-02-24 12 views
8

私のRailsアプリケーションでMixpanelでセッション数をカウントしている問題があります。基本的に、誰かが外部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を追跡し!!!!!!」自分のアカウント(ユーザーID:4)からページを訪問したときに私のコンソールに表示されます。しかし、私がMixPanelにアクセスすると、ダッシュボードに表示されるイベントはありません。

シークレットブラウザ(ID:nil)にアクセスするとセッションイベントが記録されることがあります。または、シークレットにアクセスして明示的にアカウントにログインすると、セッションイベントが記録されます。しかし、目標は、ユーザーが外部のURLから訪問するたびにイベントを登録することです。

私の他のミックスパネルイベントは正常に動作しています。このインスタンスでセッションイベントが発生しない理由は何ですか?これをさらにデバッグするにはどうすればよいですか?

ありがとうございます!

編集:私はRubyの実装のため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 
+0

FYI: 'current_user? id = current_user.id:id = nil'は、 'id = current_user? current_user.id:nil'。さらに、 'track'が' nil'値を受け入れるように見えるので、三項演算子を取り除き、 'mixpanel.track(" Session "、" ID "=> current_user.id)を使うことができます。 – Mohamad

+0

@モハマドしかし、もしcurrent_userがないなら、current_user.idはエラーを投げませんか? –

+0

はい、それは私のコメントの後半部分を無視してください、しかし、以前のアドバイスはまだ三項演算子を簡略化することを約束しています。 :D – Mohamad

答えて

0

どれでもこのインスタンスでセッションイベントが発生しない理由は何ですか?これをさらにデバッグするにはどうすればよいですか?

質問のデバッグ側に答えるには、まずこのイベントを正しい方法で送信することから始めます。

どこにでもロギングを追加してください! mengpaneelのトラック法では:

def track(event, properties = {}) 
    return if @disable_all_events || @disabled_events.include?(event) 

    properties = @properties.merge(properties) 

    super(@distinct_id, event, properties) 
end 

私はそれらの属性を記録するために私の地元の宝石を更新することにより、に設定されているもの@disable_all_events@disabled_events確認したいです。また、何らかのエラー応答を返す場合に備えて、superを呼び出した結果を記録します。またはルビーdebuggerを使用します。

他の通話が機能しているとお知りになりました。おそらく、この通話は黙っているようです。

もう1つの方法は、HTTPリクエスト(つまりチャールズ)の途中でプロキシを取得する方法です。

関連する問題