2016-03-28 36 views
2

newrelic_rpm的AMP驗證說「標籤‘腳本’是不允許的,除了以特定形式。」如何禁用on Rails的AMP

現在我知道這個標籤「腳本」會自動創建newrelic_rpm。

我的問題是,我怎麼能AMP頁面上禁用newrelic_rpm。

我AMP網頁的網址是像http://example.com/foo/bar.amp

所以,我想這樣的配置/ newrelic.yml設置:

common: &default_settings 
    license_key: foobarfoobarfoobarfoobar 

    app_name: Foobar 

    rules.ignore_url_regexes: ["amp", ".*amp"] 

development: 
    <<: *default_settings 
    app_name: FooBar (Development) 

    developer_mode: true 

但它不工作。

我的項目環境:

  • 軌(4.1.8)
  • 紅寶石(2.2.3)
  • newrelic_rpm(3.14.0.305)

回答

6

我做同樣的事情。小調整@ Awjecc的回答

ApplicationController < ActionController::Base 

    before_action :ignore_newrelic, :if => :amp_request? 

    ... 


    private 

    def ignore_newrelic 
    NewRelic::Agent.ignore_transaction 
    NewRelic::Agent.ignore_apdex 
    NewRelic::Agent.ignore_enduser 
    end 

    def amp_request? 
    request.format.try(:amp?) 
    end 

end 
+0

可能值得讓你的其他控制器使用'amp_request?'雖然,不是嗎? – coreyward

+0

其他控制器通常從ApplicationController繼承,並且應該可以訪問該方法 – Swards

+0

私有方法不能從繼承/子類訪問。這就是爲什麼你通常使用'protected'方法。 – coreyward

4

我解決了自己。

application_controller.rb

class ApplicationController < ActionController::Base 
    before_action :before_amp, 
       if: -> { request.path_parameters[:format] == 'amp' } 

    private 

    def before_amp 
    NewRelic::Agent.ignore_transaction 
    NewRelic::Agent.ignore_apdex 
    NewRelic::Agent.ignore_enduser 
    end 
end 

我會保持這個問題的人煩惱的情況相同。