Created
November 24, 2011 08:54
-
-
Save idyll/1390925 to your computer and use it in GitHub Desktop.
NewRelic changeless needed to work with Grape on Heroku
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if Rails.env.production? | |
require 'new_relic/agent/instrumentation/controller_instrumentation' | |
module NewRelic | |
module Agent | |
module Instrumentation | |
module API | |
def newrelic_request_headers | |
@newrelic_request.env | |
end | |
def call_with_newrelic(*args) | |
@newrelic_request = ::Rack::Request.new(args.first) | |
path = @newrelic_request.path.split('/').delete_if { |p| p.blank? }.join('_') | |
method = @newrelic_request.request_method.downcase | |
perform_action_with_newrelic_trace( | |
:category => :rack, | |
:path => "#{path}\##{method}", | |
:request => @newrelic_request) do | |
result = call_without_newrelic(*args) | |
# Ignore cascaded calls | |
MetricFrame.abort_transaction! if result.first == 404 | |
result | |
end | |
end | |
def self.included middleware #:nodoc: | |
middleware.class_eval do | |
alias call_without_newrelic call | |
alias call call_with_newrelic | |
end | |
end | |
include ControllerInstrumentation | |
def self.extended middleware #:nodoc: | |
middleware.class_eval do | |
class << self | |
alias call_without_newrelic call | |
alias call call_with_newrelic | |
end | |
end | |
end | |
end | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This was grabbed from http://code.dblock.org/ -- specifically http://code.dblock.org/new-relic-performance-instrumentation-with-grape-api