rails-routes-prettier 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -1
- data/lib/rails/routes/prettier/formatter.rb +29 -0
- data/lib/rails/routes/prettier/objects/route.rb +94 -0
- data/lib/rails/routes/prettier/version.rb +1 -1
- data/lib/rails/routes/prettier.rb +18 -2
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 405a6227c2f35a4232a4f2c5a5a85eef6d47002f41b538ce05a28e220e0e2501
|
4
|
+
data.tar.gz: f01a0ac7faf3ebe1906413a21418914d918e401d15dd9309832d09d0916de715
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bd0a12417f08f5b356be8fc26273ad72598c3b2f0d5db2f237bf9ee3f48745b61e36d97b57a86135aa65ed445f8a83026a3a7fe3e35ecb61a6ccc1730bf6d9c
|
7
|
+
data.tar.gz: 4d52e9ee8397756b051559ad367c4135e945540c859aab20509dba81f362dc6d27b110c2396581ea304397e801da531b9a4d562bc2835649e1fc3042808ccd7f
|
data/README.md
CHANGED
@@ -27,7 +27,28 @@ gem install rails-routes-prettier
|
|
27
27
|
|
28
28
|
## Usage
|
29
29
|
|
30
|
-
|
30
|
+
To view the routes in your application, you can use the following code:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
Rails::Routes::Prettier.all
|
34
|
+
# => [#<Route name: 'root', verb: 'GET', path: '/', controller: 'SwaggerController', action: 'index' req_options: {}>, ...]
|
35
|
+
```
|
36
|
+
|
37
|
+
This will display all of the routes in your application in a clean and readable format. You can also search for routes by certain fields using the following methods:
|
38
|
+
|
39
|
+
- `find_by_name`: Searches for routes by name.
|
40
|
+
- `find_by_verb`: Searches for routes by HTTP verb.
|
41
|
+
- `find_by_path`: Searches for routes by path.
|
42
|
+
- `find_by_req_options`: Searches for routes by requirements options.
|
43
|
+
- `find_by_controller`: Searches for routes by controller.
|
44
|
+
- `find_by_action`: Searches for routes by action.
|
45
|
+
|
46
|
+
For example, you can search for a route with the verb `GET` by using the following code:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
Rails::Routes::Prettier.find_by_verb('GET')
|
50
|
+
# => [#<Route name: 'root', verb: 'GET', path: '/', controller: 'SwaggerController', action: 'index' req_options: {}>, ...]
|
51
|
+
```
|
31
52
|
|
32
53
|
## Development
|
33
54
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rails
|
4
|
+
module Routes
|
5
|
+
module Prettier
|
6
|
+
class Formatter
|
7
|
+
attr_reader :routes
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@routes = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def section_title(title); end
|
14
|
+
|
15
|
+
def header(routes); end
|
16
|
+
|
17
|
+
def result
|
18
|
+
routes
|
19
|
+
end
|
20
|
+
|
21
|
+
def section(routes)
|
22
|
+
routes.map do |route|
|
23
|
+
@routes << Rails::Routes::Prettier::Objects::Route.new(route)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rails
|
4
|
+
module Routes
|
5
|
+
module Prettier
|
6
|
+
module Objects
|
7
|
+
class Route
|
8
|
+
attr_reader :route
|
9
|
+
|
10
|
+
def initialize(route)
|
11
|
+
@route = route
|
12
|
+
end
|
13
|
+
|
14
|
+
def name
|
15
|
+
route[:name]
|
16
|
+
end
|
17
|
+
|
18
|
+
def verb
|
19
|
+
route[:verb]
|
20
|
+
end
|
21
|
+
|
22
|
+
def path
|
23
|
+
route[:path].gsub(/(\(\.:format\))$/, '')
|
24
|
+
end
|
25
|
+
|
26
|
+
def reqs
|
27
|
+
route[:reqs]
|
28
|
+
end
|
29
|
+
|
30
|
+
def controller
|
31
|
+
return nil if redirect? || custom_router? || basic_auth?
|
32
|
+
|
33
|
+
reqs.split('#').first.split('/').map(&:camelize).join('::').concat('Controller')
|
34
|
+
end
|
35
|
+
|
36
|
+
def action
|
37
|
+
return nil if redirect? || custom_router? || basic_auth?
|
38
|
+
|
39
|
+
reqs.split('#').last.split(' ').first
|
40
|
+
end
|
41
|
+
|
42
|
+
# rubocop:disable Security/Eval
|
43
|
+
def req_options
|
44
|
+
return {} if redirect? || basic_auth?
|
45
|
+
|
46
|
+
begin
|
47
|
+
eval(reqs.split("#{action} ").last)
|
48
|
+
rescue StandardError
|
49
|
+
{}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
# rubocop:enable Security/Eval
|
53
|
+
|
54
|
+
def to_h
|
55
|
+
{
|
56
|
+
name: name,
|
57
|
+
verb: verb,
|
58
|
+
path: path,
|
59
|
+
controller: controller,
|
60
|
+
action: action,
|
61
|
+
req_options: req_options
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
def to_json(*_args)
|
66
|
+
to_h.to_json
|
67
|
+
end
|
68
|
+
|
69
|
+
# rubocop:disable Layout/LineLength
|
70
|
+
def to_s
|
71
|
+
"<Route name: '#{name}', verb: '#{verb}', path: '#{path}', controller: '#{controller}', action: '#{action}' req_options: #{req_options}>"
|
72
|
+
end
|
73
|
+
# rubocop:enable Layout/LineLength
|
74
|
+
|
75
|
+
def inspect
|
76
|
+
"##{self}"
|
77
|
+
end
|
78
|
+
|
79
|
+
def redirect?
|
80
|
+
reqs.match?(/redirect(.*,|.*$)/)
|
81
|
+
end
|
82
|
+
|
83
|
+
def basic_auth?
|
84
|
+
reqs.start_with?('#<Rack::Auth::Basic')
|
85
|
+
end
|
86
|
+
|
87
|
+
def custom_router?
|
88
|
+
reqs.start_with?('#<')
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -1,12 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'prettier/version'
|
4
|
+
require_relative 'prettier/objects/route'
|
5
|
+
require_relative 'prettier/formatter'
|
6
|
+
require 'rails'
|
4
7
|
|
5
8
|
module Rails
|
6
9
|
module Routes
|
7
10
|
module Prettier
|
8
|
-
class
|
9
|
-
|
11
|
+
class << self
|
12
|
+
SEARCHABLE_FIELDS = %i[name verb path req_options controller action].freeze
|
13
|
+
|
14
|
+
def all
|
15
|
+
ActionDispatch::Routing::RoutesInspector.new(::Rails.application.routes.routes).format(
|
16
|
+
Rails::Routes::Prettier::Formatter.new, {}
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
SEARCHABLE_FIELDS.each do |field|
|
21
|
+
define_method :"find_by_#{field}" do |value|
|
22
|
+
all.select { |route| route.send(field) == value }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
10
26
|
end
|
11
27
|
end
|
12
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-routes-prettier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nejdetkadir
|
@@ -44,6 +44,8 @@ files:
|
|
44
44
|
- README.md
|
45
45
|
- Rakefile
|
46
46
|
- lib/rails/routes/prettier.rb
|
47
|
+
- lib/rails/routes/prettier/formatter.rb
|
48
|
+
- lib/rails/routes/prettier/objects/route.rb
|
47
49
|
- lib/rails/routes/prettier/version.rb
|
48
50
|
- rails-routes-prettier.gemspec
|
49
51
|
- sig/rails/routes/prettier.rbs
|