Class: RailsRoutesAnalyzer::RouteCall

Inherits:
Hash
  • Object
show all
Defined in:
lib/rails_routes_analyzer/route_call.rb

Overview

Represents both positive and negative information collected about a specific call that generated Rails routes.

If called in a loop each iteration generates a new record.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**kwargs) ⇒ RouteCall

Returns a new instance of RouteCall.



21
22
23
# File 'lib/rails_routes_analyzer/route_call.rb', line 21

def initialize(**kwargs)
  update(kwargs)
end

Class Method Details

.fields(*names) ⇒ Object



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

def self.fields(*names)
  names.each { |name| define_method(name) { self[name] } }
end

Instance Method Details

#add_issue(issue) ⇒ Object



29
30
31
32
# File 'lib/rails_routes_analyzer/route_call.rb', line 29

def add_issue(issue)
  issue.route_call = self
  issues << issue
end

#full_filenameObject



42
43
44
# File 'lib/rails_routes_analyzer/route_call.rb', line 42

def full_filename
  @full_filename ||= RailsRoutesAnalyzer.get_full_filename(file_location.sub(/:[0-9]*\z/, ''))
end

#human_readable_error(**kwargs) ⇒ Object



54
55
56
# File 'lib/rails_routes_analyzer/route_call.rb', line 54

def human_readable_error(**kwargs)
  issues.map { |issue| issue.human_readable_error(**kwargs) }.join('; ')
end

#issue?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/rails_routes_analyzer/route_call.rb', line 34

def issue?
  issues.any?
end

#issuesObject



25
26
27
# File 'lib/rails_routes_analyzer/route_call.rb', line 25

def issues
  self[:issues] ||= []
end

#line_numberObject



46
47
48
# File 'lib/rails_routes_analyzer/route_call.rb', line 46

def line_number
  @line_number ||= file_location[/:([0-9]+)\z/, 1].to_i
end

#present_actions?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/rails_routes_analyzer/route_call.rb', line 38

def present_actions?
  present_actions.present?
end

#suggestion(**kwargs) ⇒ Object



50
51
52
# File 'lib/rails_routes_analyzer/route_call.rb', line 50

def suggestion(**kwargs)
  issues.map { |issue| issue.suggestion(**kwargs) }.join('; ')
end

#try_to_fix_line(line) ⇒ Object



58
59
60
61
62
# File 'lib/rails_routes_analyzer/route_call.rb', line 58

def try_to_fix_line(line)
  return if issues.size != 1

  issues[0].try_to_fix_line(line)
end