В настоящее время я настраиваю 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);
Как бы я лучше справился с этим?
Все самое лучшее,
Ваш 'DummyMixpanel' не имеет какого-либо метода' people'. Вместо этого он возвращает 'true' (см.' Method_missing'). 'true' не имеет метода' set', поэтому возникает ошибка при попытке вызвать '@ tracker.people.set (...)'. –