2015-07-14 4 views
0

Je suis actuellement en train de paramétrer mixpanel pour notre service et tout fonctionne très bien, mais je veux passer mixpanel comme méthode_missing si dans l'environnement de développement/test.Passer à method_missing (mixpanel)

J'ai dans mon application_controller.rb:

before_filter :initialize_mixpanel 

def initialize_mixpanel 
    if ENV.has_key?('MIXPANEL_PROJECT_TOKEN') 
    @tracker = Mixpanel::Tracker.new('MIXPANEL_PROJECT_TOKEN', request.env) 
    else 
    @tracker = DummyMixpanel.new 
    end 
end 

et dans mon mixpanel.rb:

unless ENV.has_key?('MIXPANEL_PROJECT_TOKEN') 
    class DummyMixpanel 
    def method_missing(m, *args, &block) 
     true 
    end 
    end 
end 

cela fonctionne pour un suivi normal comme @ tracker.track (.. mais en essayant de passer .set méthode, il retourne NoMethodError: TrueClass par exemple en utilisant ce code:: pour vrai `set » méthode non définie

@tracker.people.set(current_subscriber.id, { 
    '$name'    => current_subscriber.name, 
    '$email'   => current_subscriber.email, 
    '$hometown'  => current_subscriber.hometown, 
    '$birth_year'   => current_subscriber.birth_year, 
}, ip=current_subscriber.ip); 

Comment est-ce que je ferais mieux de gérer cela?

Tous les meilleurs,

+0

Votre 'DummyMixpanel' n'a pas de méthode' people'. Il renvoie 'true' à la place (voir' method_missing'). 'true' n'a pas de méthode' set', donc il déclenche une erreur quand vous essayez d'appeler '@ tracker.people.set (...)'. –

Répondre