Sha256: 8da8bfd64870daf729d97491307c5c20bd04840de54a5a484f619ad28bce53cd

Contents?: true

Size: 1.53 KB

Versions: 1

Compression:

Stored size: 1.53 KB

Contents

require 'sinatra/base'
require 'toadhopper'
require 'sinatra/toadhopper/version'

module Sinatra
  module Toadhopper

    module Helpers
      # Reports the current sinatra error to Hoptoad
      def post_error_to_airbrake!
        unless airbrake_api_key
          STDERR.puts "Airbrake api key not set, e.g. set :airbrake, :api_key => 'my api key'"
          return
        end
        toadhopper = ::Toadhopper.new(airbrake_api_key, airbrake_options)
        toadhopper.filters = airbrake_filters if airbrake_filters
        toadhopper.post!(
          env['sinatra.error'],
          {
            :url => request.url,
            :params => request.params,
            :session => session.to_hash,
            :environment => ENV.to_hash,
            :framework_env => settings.environment.to_s,
            :project_root => settings.root,
            :notifier_name => (notifier_name = "toadhopper-sinatra"),
            :notifier_version => VERSION,
            :notifier_url => 'http://github.com/toolmantim/toadhopper-sinatra'
          },
          {'X-Hoptoad-Client-Name' => notifier_name}
        )
      end
      private
        def airbrake_filters
          settings.airbrake[:filters]
        end
        def airbrake_api_key
          settings.airbrake[:api_key]
        end
        def airbrake_options
          settings.airbrake.reject {|k,_| [:api_key, :filters].include?(k)}
        end
    end
    
    def self.registered(app)
      app.helpers Toadhopper::Helpers
      app.set :airbrake, {}
    end
    
  end
  
  register Toadhopper
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
toadhopper-sinatra-2.1 lib/sinatra/toadhopper.rb