2015-07-14 3 views
0

В настоящее время я настраиваю mixpanel для нашего сервиса, и все это отлично работает, однако я хочу передать mixpanel как method_missing, если в среде разработки/тестирования.Передача set to method_missing (mixpanel)

У меня есть это в моем 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 

и это в моем mixpanel.rb:

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

это работает для нормального трекера, как @ tracker.track (.. но при попытке передать метод .set к нему, он возвращает NoMethodError: undefined method `set 'для true: TrueClass например, используя этот код:

@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); 

Как бы я лучше справился с этим?

Все самое лучшее,

+0

Ваш 'DummyMixpanel' не имеет какого-либо метода' people'. Вместо этого он возвращает 'true' (см.' Method_missing'). 'true' не имеет метода' set', поэтому возникает ошибка при попытке вызвать '@ tracker.people.set (...)'. –

ответ