swagger_yard-rails 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d248d4671c0286e33c03fdcc1f76bcb5ea90f01
4
- data.tar.gz: bd8680420703b96511d1c0fb1ea2105aec6d49ec
3
+ metadata.gz: 282e5f9bbc7d5b2c59bdfdf2240c48b70912bb6a
4
+ data.tar.gz: ed70441ac1bf98a36b0005bd0ace4bc622847b16
5
5
  SHA512:
6
- metadata.gz: bd8c8db718238a6b20205b3aacd390e963593b40015c5c090d47bb0c921658bd1b2398bb95e7737c751481f25d10b2e6122e51c09081295e5832f445348dce25
7
- data.tar.gz: 750229999539fdb1e544932d454ac6889750d5a2dd83474ab2ec80c9e149d36f0f572361f444fb80e2d8c40b2ee8585d07f5c90bfaa7bfe724ee2ccad6bd2fae
6
+ metadata.gz: e605ac864174175af0a3c40a57720baae8a6d710756bb0faa6281112090ade40fc7351cc8e0cd94afe96616f6c4e8b515f7e4b32aec151095fd274a52b3164b8
7
+ data.tar.gz: e0745dcda80f5dc9dfbe04708d139d4efa7dc9f7f036873f62f9d39425b9b5a8be50560cda6c2baa7fa3edb89dd6756889d0dd7529c10e5496779ca256e5f028
@@ -1 +1 @@
1
- 2.2.2
1
+ 2.2.5
@@ -1,5 +1,10 @@
1
1
  # SwaggerYard-Rails Changelog
2
2
 
3
+ ## 0.3.3 25-07-2016 ##
4
+
5
+ * Descend into engine routes when searching for matches. This allows documented
6
+ APIs in engines to be included in the spec.
7
+
3
8
  ## 0.3.2 29-01-2016 ##
4
9
 
5
10
  * Use `#controller_path` instead of duplicating controller name logic
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # SwaggerYard::Rails
2
2
 
3
+ [![TravisCI](https://secure.travis-ci.org/livingsocial/swagger_yard-rails.png "TravisCI")](http://travis-ci.org/livingsocial/swagger_yard-rails "Travis-CI swagger_yard-rails")
4
+ [![Gem Version](https://badge.fury.io/rb/swagger_yard-rails.svg)](https://rubygems.org/gems/swagger_yard-rails)
5
+
6
+
3
7
  The SwaggerYard::Rails gem is a Rails Engine designed to parse your Yardocs API controllers using SwaggerYard. It'll create a Swagger-UI complaint JSON to be served out through where you mount SwaggerYard::Rails::Engine.
4
8
 
5
9
  ## Installation
@@ -111,7 +115,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
111
115
 
112
116
  ## Contributing
113
117
 
114
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/swagger_yard-rails. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
118
+ Bug reports and pull requests are welcome on GitHub at https://github.com/livingsocial/swagger_yard-rails. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
115
119
 
116
120
  ## License
117
121
 
@@ -16,15 +16,18 @@ module SwaggerYard
16
16
  def call(yard_obj)
17
17
  return nil if skip_object?(yard_obj)
18
18
 
19
- info = yard_info(yard_obj)
20
- route = find_route(info)
21
- method = route.verb.source.gsub(/[$^]/, '')
19
+ info = yard_info(yard_obj)
20
+ route_arr = find_route(info)
21
+ route = route_arr.last
22
+ method = route.verb.source.gsub(/[$^]/, '')
22
23
 
23
24
  raise Error, "no http method: #{info.inspect}" if method.empty?
24
25
 
25
- path = route.parts.inject(route.ast.to_s) do |p,sym|
26
- p.sub(sym.inspect, "{#{sym}}")
27
- end
26
+ path = route_arr.map do |r|
27
+ r.parts.inject(r.ast.to_s) do |p,sym|
28
+ p.sub(sym.inspect, "{#{sym}}")
29
+ end
30
+ end.join
28
31
 
29
32
  # FIXME: always remove format parameter?
30
33
  path = path.sub('(.{format})', '')
@@ -59,20 +62,31 @@ module SwaggerYard
59
62
  end
60
63
 
61
64
  def find_route(info)
62
- matching_routes = @routes.select do |r|
63
- if info[:route]
64
- r.name == info[:route]
65
- else
66
- r.defaults[:controller] == info[:controller] &&
67
- r.defaults[:action] == info[:action]
68
- end
69
- end
65
+ matching_routes = walk_routes(info)
70
66
 
71
67
  raise Error, "too many matches: #{info.inspect}" if matching_routes.size > 1
72
68
  raise Error, "no matching route: #{info.inspect}" if matching_routes.size < 1
73
69
 
74
70
  matching_routes.first
75
71
  end
72
+
73
+ def walk_routes(info, routes = @routes, stack = [])
74
+ selected_routes = []
75
+
76
+ routes.each do |r|
77
+ if info[:route] && r.name == info[:route]
78
+ selected_routes << stack + [r]
79
+ elsif info[:controller] && info[:action] &&
80
+ r.defaults[:controller] == info[:controller] &&
81
+ r.defaults[:action] == info[:action]
82
+ selected_routes << stack + [r]
83
+ elsif r.app && r.app.respond_to?(:routes)
84
+ selected_routes += walk_routes(info, r.app.routes.set, stack + [r])
85
+ end
86
+ end
87
+
88
+ selected_routes
89
+ end
76
90
  end
77
91
  end
78
92
  end
@@ -1,5 +1,5 @@
1
1
  module SwaggerYard
2
2
  module Rails
3
- VERSION = "0.3.2"
3
+ VERSION = "0.3.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swagger_yard-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Pitale
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-29 00:00:00.000000000 Z
11
+ date: 2016-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -185,9 +185,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
185
  version: '0'
186
186
  requirements: []
187
187
  rubyforge_project:
188
- rubygems_version: 2.4.5
188
+ rubygems_version: 2.4.8
189
189
  signing_key:
190
190
  specification_version: 4
191
191
  summary: Rails engine to parse and render json for Swagger UI
192
192
  test_files: []
193
- has_rdoc: