Module: Gaffe

Defined in:
lib/gaffe.rb,
lib/gaffe/errors.rb,
lib/gaffe/version.rb,
lib/gaffe/errors_controller.rb

Defined Under Namespace

Modules: Errors Classes: ErrorsController

Constant Summary collapse

VERSION =
'0.2'

Class Method Summary collapse

Class Method Details

.builtin_errors_controllerObject

Return our default controller



18
19
20
21
# File 'lib/gaffe.rb', line 18

def self.builtin_errors_controller
  require 'gaffe/errors_controller'
  Gaffe::ErrorsController
end

.configurationObject

Return the configuration settings



13
14
15
# File 'lib/gaffe.rb', line 13

def self.configuration
  @configuration ||= OpenStruct.new
end

.configure {|configuration| ... } ⇒ Object

Yield a block to populate @configuration

Yields:



8
9
10
# File 'lib/gaffe.rb', line 8

def self.configure
  yield configuration
end

.enable!Object

Configure Rails to use our code when encountering exceptions



24
25
26
27
28
# File 'lib/gaffe.rb', line 24

def self.enable!
  Rails.application.config.exceptions_app = lambda do |env|
    Gaffe.errors_controller_for_request(env).action(:show).call(env)
  end
end

.errors_controller_for_request(env) ⇒ Object

Return the right errors controller to use for the request that triggered the error



32
33
34
35
36
37
38
39
40
# File 'lib/gaffe.rb', line 32

def self.errors_controller_for_request(env)
  controller = configuration.errors_controller

  if controller.is_a?(Hash)
    controller = controller.detect { |pattern, _| env["REQUEST_URI"] =~ pattern }.try(:last)
  end

  controller || builtin_errors_controller
end

.rootObject

Return the root path of the gem



43
44
45
# File 'lib/gaffe.rb', line 43

def self.root
  File.expand_path('../../', __FILE__)
end