Search code examples
ruby-on-railsspreenewrelic

Spree API and New Relic monitoring


I've got problem with monitoring my app with New Relic.

I have latest Spree engine mounted in my routes and own controller to serve as root.

For some reason, New Relic gathers only data from this root route, any call to Spree JSON API is ignored and don't show up in Dashboard, so I can see only one transaction and it's pretty useless.

Is there any way to enable monitoring on whole mounted app? Am I missing something?


Solution

  • As long as you're running on Rails 4.0 or later, adding the following to app/controllers/spree/api/base_controller_decorator.rb or some equivalent location should get instrumentation wired up:

    class Spree::Api::BaseController
      include ActionController::Instrumentation
    end
    

    This works because on Rails 4.0 and later New Relic's controller instrumentation is based off ActiveSupport::Notifications, and include ActionController::Instrumentation gets those events flowing.