В настоящее время я настраиваю mixpanel для нашего сервиса, и все работает отлично, однако я хочу передать mixpanel как method_missing, если в среде разработки/тестирования.
У меня есть это в моем 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(...)
возникает ошибка. - person Sebastian vom Meer   schedule 14.07.2015