2012-03-05 9 views
1

私のアプリケーションにはthe mixpanel gemを使用しています。これはミドルウェアとして機能し、アクションのためにコードを頭に動的に挿入します。私は特定のアクション(例えば、電子メールを送信するアクションがあり、そこにコードを持っていないと思います)のためにそれを無効にしたいと考えています。どのようにこれを達成するための任意のアイデア?Rubyでミックスパネルミドルウェアを呼び出す

ありがとうございます。 the Mixpanel docsから

答えて

1

はmixpanelコード
注意を挿入しupdated彼らの宝石

防止ミドルウェアを持っているようだ:ラックミドルウェアを設置している場合にのみ適用されます。
場合によっては、ミドルウェアに変更させたくない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

+1

恐ろしい、それはそれを解決するように見えます。私はもうそのプロジェクトに取り組んでいないので、検証できませんが、実際のソリューションであるため、あなたのものを正しいものとしてマークします。ありがとう! –

0

あなたapplication_controllerクラスでは、インスタンスmixpanelにメソッドを追加します。

before_filter :initialize_mixpanel 

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

それはあなたが、例えば、よく、特定のアクションのために、または特定のアクション以外のすべてのためにそれをスキップするためにあなたの他のコントローラにskip_before_filterを使用することができますbefore_filterによって初期化されますので:

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

    # or 

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

end 
+0

。実際には、before_filterではなく、middleware経由で呼び出されます。このように:config.middleware.use "Mixpanel :: Tracker :: Middleware"、 "API_KEY" –

+0

ああ、残念です。ドキュメンテーションは不明瞭だった(あるいは、おそらく、ミドルウェアの仕組みについての私の記憶はあいまいである)。うまくいけばもっと知っている人がやってきます。それ以外の場合は、開発者に直接質問することもできます。 [これは役に立つかもしれません](http://stackoverflow.com/questions/920719/how-do-i-use-a-rack-middleware-only-for-certain-paths) Mixpanel :: Tracker)、または[This](http://stackoverflow.com/questions/4598264/use-some-middleware-only-for-specific-rack-website)(類似した)がんばろう! –

+0

ジョーダンのリンクをありがとう、私はそれらをチェックします –

0

私たちはこれを行う方法を理解することができず、事実の後で(gsubを使って)それを取り除き終えました。他の誰かがもっと良い解決策を持っているなら、私は間違いなくあなたのものを正しいものとしてマークします。質問を閉じるだけです。おかげ

関連する問題