Exception: Sandals::ActionError

Inherits:
StandardError
  • Object
show all
Defined in:
lib/sandals/action_error.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(control, original_error) ⇒ ActionError

Returns a new instance of ActionError.



7
8
9
10
11
# File 'lib/sandals/action_error.rb', line 7

def initialize(control, original_error)
  @control = control
  @original_error = original_error
  super(original_error.message)
end

Instance Attribute Details

#controlObject (readonly)

Returns the value of attribute control.



5
6
7
# File 'lib/sandals/action_error.rb', line 5

def control
  @control
end

#original_errorObject (readonly)

Returns the value of attribute original_error.



5
6
7
# File 'lib/sandals/action_error.rb', line 5

def original_error
  @original_error
end

Instance Method Details

#action_nameObject



13
14
15
16
17
# File 'lib/sandals/action_error.rb', line 13

def action_name
  return control.content if control.respond_to?(:content)

  control.label
end

#locationObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sandals/action_error.rb', line 19

def location
  locations = original_error.backtrace_locations || []
  relevant_location = locations.find do |candidate|
    !candidate.absolute_path.to_s.include?("/lib/sandals/")
  end || locations.first
  return "Location unavailable" unless relevant_location

  path = relevant_location.absolute_path || relevant_location.path
  path = path.delete_prefix("#{Dir.pwd}/")
  "#{path}:#{relevant_location.lineno}"
end