在Ruby中切换Mixpanel中间件调用

时间:2012-03-05 17:26:24

标签: ruby-on-rails middleware mixpanel

我正在使用the mixpanel gem申请。它充当中间件并动态地将代码插入到头部以进行任何操作。我希望能够针对特定操作将其关闭(例如,我们有一个发送电子邮件的操作,而我们宁愿不在那里使用代码)。有关如何实现这一目标的任何想法?

非常感谢。

3 个答案:

答案 0 :(得分:1)

似乎mixpanel有updated他们的宝石

  

阻止中间件插入代码
  注意:仅适用于设置Rack Middleware时   有时,您可能需要发送不希望中间件更改的HTML请求。在您的AJAX请求中包含标题“SKIP_MIXPANEL_MIDDLEWARE”以防止插入mixpanel代码。

   $.ajax("/path/to/api/endpoint", {
     headers: {"Skip-Mixpanel-Middleware": true}, // valid http headers don't allow underscores and get filtered by some webservers
     success: function(data) {
       // Process data here
     }   }); 

    //Alternatively, you can add this line of code to your controller to temporarily disable the middleware:

    Mixpanel::Middleware.skip_this_request

取自: https://github.com/zevarito/mixpanel#prevent-middleware-from-inserting-code

答案 1 :(得分:0)

来自the Mixpanel docs

  

在application_controller类中,向实例mixpanel添加方法。

before_filter :initialize_mixpanel

def initialize_mixpanel
  @mixpanel = Mixpanel::Tracker.new("YOUR_MIXPANEL_API_TOKEN", request.env, true)
end

由于它是由before_filter初始化的,因此您可以在其他控制器中使用skip_before_filter,以便跳过某些操作,或者除了特定操作之外的所有操作,例如:

class SomeController < ActionController::Base
  skip_before_filter :initialize_mixpanel, :only => [ :create, :new ]

  # or

  skip_before_filter :initialize_mixpanel, :except => [ :update ]

end

答案 2 :(得分:0)

我们无法找到一种方法来做到这一点并最终在事后将其剥离(使用gsub)。如果其他人有更好的解决方案,我肯定会将你的标记为正确,我只想关闭这个问题。感谢