module Wildsight::Rails

Public Class Methods

instrument() click to toggle source
# File lib/wildsight/rails/railtie.rb, line 4
def self.instrument
  return if @instrumented

  @instrumented = true

  ::AbstractController::Base.class_eval do

    include Wildsight::Rails::ActionController

    alias_method :process_action_without_ws, :process_action

    def wildsight_context
      @_wildsight_context ||= Wildsight::Rack.detect_context(self.respond_to?(:request) ? request.env : {})
    end

    def process_action(*args)
      context = Wildsight::Rack.detect_context(self.respond_to?(:request) ? request.env : {})
      return process_action_without_ws(*args) unless context

      if respond_to?(:request)
        context.data[:rack][:request][:target] = self.class.name + '#' + request.params['action']

        context.data[:rack][:request][:method] = request.method
        context.data[:rack][:request][:path] = request.original_fullpath
        context.data[:rack][:request][:params] = request.filtered_parameters

        context.data[:rack][:request][:session] = {id: request.session.id}

        context.data[:rack][:request][:url] = request.original_url

        context.data[:rack][:request][:remote] = request.remote_ip
      end
      result = context.profiler.duration(:action) { process_action_without_ws(*args) }
      return result
    rescue Exception => e
      raise e
    end

  end

  ::AbstractController::Rendering.class_eval do

    alias_method :render_without_ws, :render

    def render(*args, &block)
      context = Wildsight::Rack.detect_context(self.respond_to?(:request) ? request.env : {})
      result = context.profiler.duration(:view) { render_without_ws(*args, &block) }
      return result
    end

  end

end

Public Instance Methods

process_action(*args) click to toggle source
# File lib/wildsight/rails/railtie.rb, line 19
def process_action(*args)
  context = Wildsight::Rack.detect_context(self.respond_to?(:request) ? request.env : {})
  return process_action_without_ws(*args) unless context

  if respond_to?(:request)
    context.data[:rack][:request][:target] = self.class.name + '#' + request.params['action']

    context.data[:rack][:request][:method] = request.method
    context.data[:rack][:request][:path] = request.original_fullpath
    context.data[:rack][:request][:params] = request.filtered_parameters

    context.data[:rack][:request][:session] = {id: request.session.id}

    context.data[:rack][:request][:url] = request.original_url

    context.data[:rack][:request][:remote] = request.remote_ip
  end
  result = context.profiler.duration(:action) { process_action_without_ws(*args) }
  return result
rescue Exception => e
  raise e
end
render(*args, &block) click to toggle source
# File lib/wildsight/rails/railtie.rb, line 48
def render(*args, &block)
  context = Wildsight::Rack.detect_context(self.respond_to?(:request) ? request.env : {})
  result = context.profiler.duration(:view) { render_without_ws(*args, &block) }
  return result
end
wildsight_context() click to toggle source
# File lib/wildsight/rails/railtie.rb, line 15
def wildsight_context
  @_wildsight_context ||= Wildsight::Rack.detect_context(self.respond_to?(:request) ? request.env : {})
end