Module: RoutesCoverage

Defined in:
lib/routes_coverage.rb,
lib/routes_coverage/result.rb,
lib/routes_coverage/version.rb,
lib/routes_coverage/middleware.rb,
lib/routes_coverage/adapters/atexit.rb,
lib/routes_coverage/formatters/base.rb,
lib/routes_coverage/formatters/html.rb,
lib/routes_coverage/adapters/simplecov.rb,
lib/routes_coverage/formatters/full_text.rb,
lib/routes_coverage/formatters/summary_text.rb

Defined Under Namespace

Modules: Adapters, Formatters Classes: Middleware, Railtie, Result, Settings

Constant Summary collapse

VERSION =
"0.2.2"

Class Method Summary collapse

Class Method Details

._touch_route(route) ⇒ Object



125
126
127
128
# File 'lib/routes_coverage.rb', line 125

def self._touch_route route
  reset! unless @@route_hit_count
  @@route_hit_count[route] += 1
end

.configure {|self.settings| ... } ⇒ Object

Yields:



67
68
69
# File 'lib/routes_coverage.rb', line 67

def self.configure
  yield self.settings
end

.enabled?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/routes_coverage.rb', line 59

def self.enabled?
  ::Rails.env.test?
end

.perform_reportObject



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/routes_coverage.rb', line 78

def self.perform_report
  return unless settings.perform_report

  all_routes = ::Rails.application.routes.routes.routes.dup

  if defined?(::Sprockets) && defined?(::Sprockets::Environment)
    all_routes.reject!{|r| r.app.is_a?(::Sprockets::Environment) }
  end

  all_result = Result.new(
    all_routes,
    @@route_hit_count,
    settings
  )


  groups = Hash[settings.groups.map{|group_name, regex|
    [group_name,
      Result.new(
        all_routes.select{|r| r.path.spec.to_s =~ regex},
        Hash[@@route_hit_count.select{|r,_hits| r.path.spec.to_s =~ regex}],
        settings
      )
    ]
  }]

  if groups.size > 1
    ungroupped_routes = all_routes.reject{|r|
      groups.values.any?{|group_routes|
        group_routes.all_routes.include? r
      }
    }

    if ungroupped_routes.any?
      groups["Ungroupped"] = Result.new(
        ungroupped_routes,
        Hash[@@route_hit_count.select{|r,_hits| ungroupped_routes.include? r}],
        settings
      )
    end
  end

  puts
  puts settings.formatter_class.new(all_result, groups, settings).format
end

.reset!Object



73
74
75
76
# File 'lib/routes_coverage.rb', line 73

def self.reset!
  @@route_hit_count = Hash.new(0)
  @@pid = Process.pid
end

.settingsObject



63
64
65
# File 'lib/routes_coverage.rb', line 63

def self.settings
  @@settings ||= Settings.new
end