2016-02-24 6 views
8

मुझे अपने रेल ऐप के लिए मिक्सपैनेल में सत्रों की गिनती सत्र हो रही है। असल में, जब भी कोई बाहरी यूआरएल (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 

डिबगिंग के लिए, मैं देखने के लिए सक्षम हूँ "!!!!! TRACKED 4 !!!!!!" मेरे कंसोल में मेरे खाते से पेज पर जाकर (उपयोगकर्ता आईडी: 4)। लेकिन जब मैं मिक्सपैनल जाता हूं, तो डैशबोर्ड में दिखाई देने वाली कोई घटना नहीं होती है।

यदि मैं एक गुप्त ब्राउज़र (आईडी: शून्य) में जाता हूं तो मैं लॉग इन करने के लिए सत्र ईवेंट प्राप्त कर सकता हूं या यदि मैं गुप्त पर जाता हूं, तो स्पष्ट रूप से मेरे खाते में लॉगिन करें। लेकिन लक्ष्य यह है कि ईवेंट किसी भी समय बाहरी यूआरएल से उपयोगकर्ता का दौरा करता है।

मेरी अन्य मिश्रित घटनाएं ठीक काम कर रही हैं। कोई विचार क्यों इस घटना में सत्र घटना फायरिंग नहीं होगी? मुझे इसे और डिबग करने के बारे में कैसे जाना चाहिए?

धन्यवाद!

संपादित करें:

initializers/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

एफवाईआई: 'current_user? id = current_user.id: id = nil' बेहतर व्यक्त किया जा सकता है 'id = current_user? current_user.id: शून्य '। इससे भी बेहतर, आप टर्नरी ऑपरेटर से छुटकारा पा सकते हैं और 'mixpanel.track (" सत्र "," आईडी "=> current_user.id) का उपयोग कर सकते हैं क्योंकि 'ट्रैक'' शून्य मान मान स्वीकार करता है। – Mohamad

+0

@ मोहम्मद लेकिन यदि कोई current_user नहीं है, तो current_user.id कोई त्रुटि फेंक नहीं देगा? –

+0

हां, यह होगा - कृपया मेरी टिप्पणी के बाद के हिस्से को अनदेखा करें, लेकिन पहले की सलाह अभी भी टर्नरी ऑपरेटर को सरल बनाने के बारे में है। : डी – Mohamad

उत्तर

0

किसी भी मैं गहरे लाल रंग का कार्यान्वयन के लिए Mengpaneel उपयोग कर रहा हूँ, यहाँ मेरी सेटअप है विचार इस सत्र में क्यों सत्र घटना फायरिंग नहीं होगी? मुझे इसे और डिबग करने के बारे में कैसे जाना चाहिए?

अपने प्रश्न के डिबगिंग पक्ष का उत्तर देने के लिए, मैं यह सुनिश्चित करके शुरू करूंगा कि मैं इस घटना को सही तरीके से भेज रहा हूं।

हर जगह लॉगिंग जोड़ें! 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 का उपयोग कर।

मुझे पता है कि आपने कहा था कि अन्य कॉल काम कर रहे थे, तो शायद यह सिर्फ यह कॉल है जो चुपचाप गिरा दिया जा रहा है।

एक और विकल्प यह पता लगाने के लिए होगा कि HTTP अनुरोधों (यानी चार्ल्स) के मध्य में प्रॉक्सी कैसे प्राप्त करें।

संबंधित मुद्दे