Переключить Микспанель Middleware Call в Ruby - PullRequest
1 голос
/ 05 марта 2012

Я использую камень mixpanel для моего приложения. Он действует как промежуточное ПО и динамически вставляет код в голову для любых действий. Я хотел бы иметь возможность отключить его для определенных действий (например, у нас есть действие, которое отправляет электронное письмо, и у нас не было бы кода там). Есть идеи, как этого добиться?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 12 июня 2013

кажется, что у mixpanel обновлен их драгоценный камень

Запретить промежуточному программному обеспечению вставлять код
Примечание. Применяется только при установке Rack Middleware.
Иногда вам может понадобиться отправить запрос на HTML, который вы не хотите, чтобы промежуточное программное обеспечение изменилось. В ваш AJAX-запрос включите заголовок «SKIP_MIXPANEL_MIDDLEWARE», чтобы предотвратить вставку кода микшерной панели.

   $.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

0 голосов
/ 23 июня 2012

Мы не могли придумать, как это сделать, и в итоге удалили его (используя gsub) после свершившегося факта. Если у кого-то еще есть лучшее решение в будущем, я определенно отмечу ваше как правильное, я просто хочу закрыть вопрос. Спасибо

0 голосов
/ 05 марта 2012

С 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
...