传递设置为 method_missing(mixpanel)
Passing set to method_missing (mixpanel)
我目前正在为我们的服务设置混合面板并且一切正常,但是如果在 development/test 环境中,我想将混合面板作为 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 方法传递给它时,它 returns 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);
我该如何最好地处理这个问题?
祝一切顺利,
尝试在 #method_missing
中返回 self
,例如:
class DummyMixpanel
def method_missing(m, *args, &block)
self
end
end
更多信息:http://devblog.avdi.org/2011/05/30/null-objects-and-falsiness/
我目前正在为我们的服务设置混合面板并且一切正常,但是如果在 development/test 环境中,我想将混合面板作为 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 方法传递给它时,它 returns 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);
我该如何最好地处理这个问题?
祝一切顺利,
尝试在 #method_missing
中返回 self
,例如:
class DummyMixpanel
def method_missing(m, *args, &block)
self
end
end
更多信息:http://devblog.avdi.org/2011/05/30/null-objects-and-falsiness/