rails_api_documentation 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: a72e86cdcaefec61dd47079acd6df5eb7ad88762
4
- data.tar.gz: dc2ee37bbed89765494a3b697ab337db746aaefb
3
+ metadata.gz: aa57f61a95e060eff72a6089f4e5806d7246bfe9
4
+ data.tar.gz: 6cafddf29e9049a7a3e75b5817f4bdc95a600c87
5
5
  SHA512:
6
- metadata.gz: 6a1d84265c02e6c7c588078cb27790bb1a231a6451aa35c3c24210b41a2ec62237deb611be3408346f66dbcd8e68fb6a44f8473194eedb77acc0f4e5e528a085
7
- data.tar.gz: 43e6fb0376be3a10f0da24cf170bc42110b79869308e5d3b7ebaf19e59104b872e2c34365bc2647ba5e50ab6fb803e38115382579e704f56d4d6692153aeb1d7
6
+ metadata.gz: a340764a01562dc0417d0289b66c0cfa7cbaa6cae3ca057adbc1fdffb93c35fc35e44b2f785e5c7de4273b11846cd460c8b5251013603e007c278ddf468e0c70
7
+ data.tar.gz: 23fb0e13df0227c92ef22498055b03278e63e3903b849c6951a4204b6d17bd49835d031830c366982355f85b89c60e6dee48ca4b8d60a537676ae7991d1179f5
data/README.md CHANGED
@@ -1,5 +1,4 @@
1
-
2
- # RailsApiDoc
1
+ # RailsApiDoc [![CircleCI](https://circleci.com/gh/vshaveyko/rails_api_doc/tree/master.svg?style=svg&circle-token=cc544085bb94b3f8613cfab79e9618bf20ce7138)](https://circleci.com/gh/vshaveyko/rails_api_doc/tree/master)
3
2
 
4
3
  ## Installation
5
4
 
@@ -19,159 +18,166 @@ Or install it yourself as:
19
18
 
20
19
  ## Features
21
20
 
22
- + displaying application api if used in one of correct ways
21
+ + Displaying application api if used in one of the correct ways.
23
22
  ![alt tag](https://raw.githubusercontent.com/vshaveyko/rails_api_doc/master/preview.png)
24
- + Integration with Rabl if it is bundled
25
- + ```strong_params``` method that will filter incoming params for you
23
+ + Integration with Rabl if it is bundled.
24
+ + `strong_params` method that will filter incoming params for you.
26
25
 
27
26
  ## Usage
28
27
 
29
28
  To display api documentation on route '/api_doc' you need to:
30
29
 
31
- 0. config/application.rb ->
30
+ 1. config/application.rb ->
31
+ ```ruby
32
+ require 'rails_api_doc'
33
+ ```
34
+
35
+ 2. config/routes.rb ->
32
36
  ```ruby
33
- require 'rails_api_doc'
37
+ mount RailsApiDoc::Engine => '/api_doc'
34
38
  ```
35
- 1. config/routes.rb ->
36
- ```ruby
37
- mount RailsApiDoc::Engine => '/api_doc'
38
- ```
39
-
40
- 2. define request parameters. Example:
41
- ```ruby
42
- class AuthorsController < ApplicationController
43
-
44
- has_scope :article_id, :name
45
-
46
- # Define parameters with type and nested options
47
- # Article and Datum are usual ActiveRecord models
48
- parameter :age, type: :integer
49
- parameter :name, type: :string, required: true
50
- parameter :articles_attributes, type: :ary_object, model: 'Article' do
51
- parameter :title, type: :string
52
- parameter :body, type: :string, required: true
53
- parameter :rating, type: :enum, enum: [1, 2, 3]
54
- parameter :data_attributes, type: :object, model: 'Datum' do
55
- parameter :creation_date, type: :datetime
56
- parameter :comment, type: :string
57
- end
58
- end
59
- parameter :test, type: :string, required: true
60
-
61
- parameter({
62
- articles_attributes: { model: 'Article', type: :ary_object },
63
- data_attributes: { model: 'Datum' },
64
- comments_attributes: { model: 'Comment', type: :ary_object }
65
- }, type: :object) do
66
- parameter :id
67
- parameter :name
68
- end
69
39
 
40
+ 3. define request parameters. Example:
41
+ ```ruby
42
+ class AuthorsController < ApplicationController
43
+
44
+ has_scope :article_id, :name
45
+
46
+ # Define parameters with type and nested options
47
+ # Article and Datum are usual ActiveRecord models
48
+ parameter :age, type: :integer
49
+ parameter :name, type: :string, required: true
50
+ parameter :articles_attributes, type: :ary_object, model: 'Article' do
51
+ parameter :title, type: :string
52
+ parameter :body, type: :string, required: true
53
+ parameter :rating, type: :enum, enum: [1, 2, 3]
54
+ parameter :data_attributes, type: :object, model: 'Datum' do
55
+ parameter :creation_date, type: :datetime
56
+ parameter :comment, type: :string
70
57
  end
71
- ```
72
- 3. go to localhost:3000/api_doc
58
+ end
59
+ parameter :test, type: :string, required: true
60
+
61
+ parameter({
62
+ articles_attributes: { model: 'Article', type: :ary_object },
63
+ data_attributes: { model: 'Datum' },
64
+ comments_attributes: { model: 'Comment', type: :ary_object }
65
+ }, type: :object) do
66
+ parameter :id
67
+ parameter :name
68
+ end
73
69
 
74
- ## Strong params
70
+ end
71
+ ```
75
72
 
76
- You may want to use your defined request api to filter incoming parameters.
77
- Usually we use something like `params.permit(:name, :age)`, but no more!
78
- With this gem bundled you can do this:
73
+ 4. go to localhost:3000/api_doc
79
74
 
80
- ```ruby
75
+ ## Strong params
81
76
 
82
- parameter :body, type: :string
83
- parameter :title, type: :string
77
+ You may want to use your defined request api to filter incoming parameters.
78
+ Usually we use something like `params.permit(:name, :age)`, but no more!
79
+ With this gem bundled you can do this:
84
80
 
85
- # controller action
86
- def create
87
- Comment.create!(strong_params)
88
- end
81
+ ```ruby
82
+ parameter :body, type: :string
83
+ parameter :title, type: :string
89
84
 
90
- ```
85
+ # controller action
86
+ def create
87
+ Comment.create!(strong_params)
88
+ end
89
+ ```
91
90
 
92
- and if request is `POST '/comments', params: { body: 'Comment body', title: 'Comment title', age: 34 }`
91
+ and if request is `POST '/comments', params: { body: 'Comment body', title: 'Comment title', age: 34 }`
93
92
 
94
- Comment will be created with: `Comment(body='Comment body', title='Comment title', age=nil)`
93
+ Comment will be created with: `Comment(body='Comment body', title='Comment title', age=nil)`
95
94
 
96
95
  ## Value
97
96
 
98
- You can pass optional value argument to every parameter:
97
+ You can pass optional value argument to every parameter:
99
98
 
100
- ```ruby
101
- parameter :val, type: :integer, value: -> (request_value) { 5 }
102
- ```
99
+ ```ruby
100
+ parameter :val, type: :integer, value: -> (request_value) { 5 }
101
+ ```
103
102
 
104
- on every matching request value in this field will be overriden by value returned by proc.
103
+ on every matching request value in this field will be overriden by value returned by proc.
105
104
 
106
- value field expecting anything that will respond to `:call` and can accept one argument(param value from request)
105
+ value field expecting anything that will respond to `:call` and can accept one argument(param value from request)
107
106
 
108
- you should expect that value passed can be `nil`
107
+ you should expect that value passed can be `nil`
109
108
 
110
- This can be used to force values on some fields, or modify values passed to request in some ways.
109
+ This can be used to force values on some fields, or modify values passed to request in some ways.
111
110
 
112
- E.g. you want to force current_user_id on model creation instead of passing it from frontend.
111
+ E.g. you want to force current_user_id on model creation instead of passing it from frontend.
113
112
 
114
113
  ## Enum
115
114
 
116
- When you defined parameter type as `:enum` you can pass `enum:` option. This will filter parameter by values provided.
115
+ When you defined parameter type as `:enum` you can pass `enum:` option. This will filter parameter by values provided.
117
116
 
118
- ## Group common blocks
117
+ E.g.:
119
118
 
120
- You can define parameters that have common fields this way:
119
+ ```ruby
120
+ parameter :rating, type: :enum, enum: [1, 2, 3]
121
+ ```
121
122
 
122
- ```ruby
123
- parameter({
124
- articles_attributes: { model: 'Article', type: :ary_object },
125
- data_attributes: { model: 'Datum' },
126
- comments_attributes: { model: 'Comment', type: :ary_object }
127
- }, type: :object) do
128
- parameter :id
129
- parameter :name
130
- end
131
- ```
123
+ All enum values are parsed as strings, since controller params are always strings. Still you may write them as you want. Every member of enum array will be replaced with `&:to_s` version.
132
124
 
133
- Pass common values as last optional arguments and uniq definitions as hash value.
134
- All nesting parameters are applied to elements in blocks.
125
+ ## Group common blocks
135
126
 
136
- Something with same type can be defined like this:
127
+ You can define parameters that have common fields this way:
137
128
 
138
- ```ruby
139
- parameter :name, :desc, type: :string
140
- ```
129
+ ```ruby
130
+ parameter({
131
+ articles_attributes: { model: 'Article', type: :ary_object },
132
+ data_attributes: { model: 'Datum' },
133
+ comments_attributes: { model: 'Comment', type: :ary_object }
134
+ }, type: :object) do
135
+ parameter :id
136
+ parameter :name
137
+ end
138
+ ```
141
139
 
142
- ## Types
140
+ Pass common values as last optional arguments and uniq definitions as hash value.
141
+ All nesting parameters are applied to elements in blocks.
143
142
 
144
- Parameter type may be one of these:
143
+ Something with same type can be defined like this:
145
144
 
146
- ```ruby
145
+ ```ruby
146
+ parameter :name, :desc, type: :string
147
+ ```
147
148
 
148
- # Non nested
149
- :bool - Boolean type, accepts true, false, 'true', 'false'
150
- :string - will accept anything beside nested type
151
- :integer - accepts numbers as string value, and usual numbers
152
- :array - array of atomic values (integer, strings, etc)
153
- :datetime - string with some datetime representation accepted by DateTime.parse
154
- :enum - one of predefined values of enum: option (only atomic types)
149
+ ## Types
155
150
 
156
- # nested
157
- :object - usual nested type. comes very handy with rails nested_attributes feature
158
- :ary_object - array of :object type, rails nested_attributes on has_many
151
+ Parameter type may be one of these:
159
152
 
160
- ```
153
+ ```ruby
154
+ # Non nested
155
+ :bool - Boolean type, accepts true, false, 'true', 'false'
156
+ :string - will accept anything beside nested type
157
+ :integer - accepts numbers as string value, and usual numbers
158
+ :array - array of atomic values (integer, strings, etc)
159
+ :datetime - string with some datetime representation accepted by DateTime.parse
160
+ :enum - one of predefined values of enum: option (only atomic types)
161
+ :model - model reference e.g. :author_id, add model value as model: 'Author' after this
162
+
163
+ # nested
164
+ :object - usual nested type. comes very handy with rails nested_attributes feature
165
+ :ary_object - array of :object type, rails nested_attributes on has_many
166
+ ```
161
167
 
162
168
  ## TODO's
163
169
  + type for id reference with model field to display associated model and CONTROLLER in params for linking
164
170
 
165
171
  + native DSL for defining response
166
172
  ```ruby
167
- action :show do
168
- response :age, type: Integer
169
- response :name, type String
170
- response :data, type: :model, model: Datum do
171
- response :creation_date, type: DateTime
172
- response :comment, type: String
173
- end
173
+ action :show do
174
+ response :age, type: Integer
175
+ response :name, type String
176
+ response :data, type: :model, model: Datum do
177
+ response :creation_date, type: DateTime
178
+ response :comment, type: String
174
179
  end
180
+ end
175
181
  ```
176
182
  + native DSL for defining scopes
177
183
  ```ruby
@@ -179,9 +185,9 @@ scope :age, desc: 'Filters authors by given age'
179
185
  ```
180
186
  + dsl for extending response parameters
181
187
  ```ruby
182
- response :data, type: :model, model: Datum do
183
- extends DataController, action: :show
184
- end
188
+ response :data, type: :model, model: Datum do
189
+ extends DataController, action: :show
190
+ end
185
191
  ```
186
192
  + dsl for extending request parameters
187
193
  ```ruby
@@ -3,7 +3,12 @@
3
3
  # :nodoc:
4
4
  class RailsApiDoc::Config
5
5
 
6
- attr_accessor :check_params_type
6
+ attr_accessor :check_params_type, :params_dir
7
+
8
+ # init default values
9
+ def initialize
10
+ @params_dir = 'params'
11
+ end
7
12
 
8
13
  def check_params_type=(value)
9
14
  if value
@@ -23,6 +23,8 @@ module RailsApiDoc
23
23
  #
24
24
  # 3. parameter :name, :code, type: :string
25
25
  #
26
+ # 4. param :name, :string, model: 'Name'
27
+ #
26
28
  def parameter(*arguments, &block)
27
29
  options = arguments.extract_options!
28
30
 
@@ -30,6 +32,9 @@ module RailsApiDoc
30
32
 
31
33
  validate_options(options, block_given?)
32
34
 
35
+ # 4)
36
+ return if second_argument_type_def(options, arguments)
37
+
33
38
  arguments.each do |param|
34
39
  # 2)
35
40
  if param.is_a?(Hash)
@@ -44,6 +49,9 @@ module RailsApiDoc
44
49
  end
45
50
  end
46
51
 
52
+ alias param parameter
53
+ alias req parameter
54
+
47
55
  private
48
56
 
49
57
  def validate_options(options, _block_given)
@@ -73,12 +81,32 @@ module RailsApiDoc
73
81
  end
74
82
 
75
83
  def nested_parameter(parameter_data)
76
- _backup_repo = @repo
84
+ backup_repo = @repo
77
85
  @repo = {}
78
86
  yield
79
87
  parameter_data.merge(nested: @repo)
80
88
  ensure
81
- @repo = _backup_repo
89
+ @repo = backup_repo
90
+ end
91
+
92
+ #
93
+ # Checks whetjher parameters can be defined by type 4)
94
+ # if possible - do it
95
+ # otherwise pass next
96
+ #
97
+ def second_argument_type_def(options, args)
98
+ is_ok = second_argument_is_type?(args)
99
+
100
+ return false unless is_ok
101
+ param = args[0]
102
+ options[:type] = args[1]
103
+
104
+ define_parameter(param, options, &block)
105
+ true
106
+ end
107
+
108
+ def second_argument_is_type?(args)
109
+ RailsApiDoc::ACCEPTED_TYPES.include?(args[1]&.to_sym)
82
110
  end
83
111
 
84
112
  end
@@ -8,9 +8,6 @@ module RailsApiDoc
8
8
  include RailsApiDoc::Controller::ResourceParams::PermittedParams # implements params_to_permit
9
9
 
10
10
  def strong_params(pars = params)
11
- #
12
- # accepted_params for permit
13
- #
14
11
  permitted = params_to_permit(pars)
15
12
 
16
13
  pars.permit(permitted)
@@ -5,12 +5,15 @@ module RailsApiDoc
5
5
  module ResourceParams
6
6
  module PermittedParams
7
7
 
8
- private
9
-
8
+ #
9
+ # accepted_params for permit
10
+ #
10
11
  def params_to_permit(pars = params)
11
12
  _next_nesting_level(pars, param_data: _permitted_params)
12
13
  end
13
14
 
15
+ private
16
+
14
17
  def _permitted_params
15
18
  ::RailsApiDoc::Controller::Request::Repository[self.class]
16
19
  end
@@ -24,7 +27,9 @@ module RailsApiDoc
24
27
  level_accepted_params = [{}]
25
28
 
26
29
  if param_name && current_accepted_params # no param name and current_accepted_params on first iteration
27
- current_accepted_params.last[param_name] = level_accepted_params
30
+ current_accepted_params.last[param_name] ||= level_accepted_params
31
+
32
+ level_accepted_params = current_accepted_params.last[param_name]
28
33
  end
29
34
 
30
35
  loop_params(controller_param, param_data, level_accepted_params)
@@ -46,33 +51,43 @@ module RailsApiDoc
46
51
  #
47
52
  def loop_params(params, level_permitted_params, accepted_params)
48
53
  level_permitted_params.each do |param_name, api_param_data|
54
+ next if accepted_params.include?(param_name) || accepted_params.last.key?(param_name)
55
+
49
56
  if api_param_data.value&.respond_to?(:call)
50
- params[param_name] = api_param_data.value.call(params[param_name])
57
+ params[param_name] = instance_eval(&api_param_data.value)
51
58
  end
52
59
 
53
60
  controller_param = params[param_name]
54
61
 
55
62
  _check_required(param_name, controller_param, api_param_data) # raise if required and no value
56
63
 
64
+ #
57
65
  # no value present && not required => skip
58
- next unless controller_param
66
+ #
67
+ # nil value is still ok params.key?(param_key) returns true if we have params = { param_key => nil }
68
+ #
69
+ next unless params.key?(param_name)
59
70
 
60
71
  # value present but not valid for this type => skip
61
72
  next unless RailsApiDoc::Config::Validator.valid_param?(controller_param, api_param_data)
62
73
 
63
74
  if api_param_data.ary_object? # controller_param value should be array of objects
64
- controller_param.each do |single_controller_param|
75
+ controller_param&.each do |single_controller_param|
65
76
  _next_nesting_level(single_controller_param,
66
77
  param_data: api_param_data.nested,
67
78
  current_accepted_params: accepted_params,
68
79
  param_name: param_name)
69
80
  end
70
81
  elsif api_param_data.nested? # value should be nested object
71
- _next_nesting_level(controller_param,
72
- param_data: api_param_data.nested,
73
- current_accepted_params: accepted_params,
74
- param_name: param_name)
82
+ if controller_param
83
+ _next_nesting_level(controller_param,
84
+ param_data: api_param_data.nested,
85
+ current_accepted_params: accepted_params,
86
+ param_name: param_name)
87
+ end
75
88
 
89
+ elsif api_param_data.array?
90
+ accepted_params.last[param_name] = []
76
91
  else # all other options
77
92
  accepted_params.unshift(param_name)
78
93
  end
@@ -54,7 +54,7 @@ class RailsApiDoc::Model::AttributeParser
54
54
  def parse_special(type, special)
55
55
  return unless special.present? && type
56
56
 
57
- if type == :enum
57
+ if type.to_sym == :enum
58
58
  parse_enum(special) # parse as enum array value
59
59
  elsif RailsApiDoc::NESTED_TYPES.include?(type.to_sym)
60
60
  special.capitalize # parse as model name
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+ # author: Vadim Shaveiko <@vshaveyko>
3
+ # :nodoc:
4
+ module RailsApiDoc::Params::DSL
5
+
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ #:nodoc:
11
+ module ClassMethods
12
+ def parameter_class=(value)
13
+ @parameter_class = value
14
+ end
15
+
16
+ def parameter_class
17
+ @parameter_class ||= RailsApiDoc::Params::Finder.new(self).call
18
+ end
19
+ end
20
+
21
+ def ctrl_strong_params
22
+ @ctrl_strong_params ||= ctrl_parameters.strong_params(params)
23
+ end
24
+
25
+ def ctrl_parameters
26
+ @ctrl_parameters ||= self.class.parameter_class.new
27
+ end
28
+
29
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+ # author: Vadim Shaveiko <@vshaveyko>
3
+ # :nodoc:
4
+ class RailsApiDoc::Params::Finder
5
+
6
+ SUFFIX = 'Parameter'
7
+
8
+ def initialize(object)
9
+ @object = object
10
+ end
11
+
12
+ def call
13
+ klass = find_class_name(@object).name.sub(/Ctrl$/, '')
14
+
15
+ "#{klass}#{SUFFIX}".constantize
16
+ end
17
+
18
+ private
19
+
20
+ def find_class_name(subject)
21
+ if subject.respond_to?(:model_name)
22
+ subject.model_name
23
+ elsif subject.class.respond_to?(:model_name)
24
+ subject.class.model_name
25
+ elsif subject.is_a?(Class)
26
+ subject
27
+ elsif subject.is_a?(Symbol)
28
+ subject.to_s.camelize
29
+ else
30
+ subject.class
31
+ end
32
+ end
33
+
34
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+ # author: Vadim Shaveiko <@vshaveyko>
3
+ # :nodoc:
4
+ class RailsApiDoc::Params
5
+
6
+ include RailsApiDoc::Controller::ResourceParams::DSL
7
+ extend RailsApiDoc::Controller::Request::DSL
8
+
9
+ end
@@ -1,13 +1,17 @@
1
+ # frozen_string_literal: true
2
+ # author: Vadim Shaveiko <@vshaveyko>
1
3
  module RailsApiDoc
2
4
  class Railtie < Rails::Railtie
5
+
3
6
  initializer 'api_doc.controller_additions' do
4
7
  ActiveSupport.on_load :action_controller do
5
-
6
8
  include RailsApiDoc::Controller::ResourceParams::DSL
7
9
 
8
10
  extend RailsApiDoc::Controller::Request::DSL
9
11
 
12
+ include RailsApiDoc::Params::DSL
10
13
  end
11
14
  end
15
+
12
16
  end
13
17
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  # author: Vadim Shaveiko <@vshaveyko>
3
3
  module RailsApiDoc
4
- VERSION = '0.3.2'
4
+ VERSION = '0.3.3'
5
5
  end
data/lib/rails_api_doc.rb CHANGED
@@ -1,13 +1,15 @@
1
1
  # author: Vadim Shaveiko <@vshaveyko>
2
2
  # frozen_string_literal: true
3
3
  module RailsApiDoc
4
-
4
+
5
5
  NESTED_TYPES = [:ary_object, :object, :json].freeze
6
6
 
7
7
  STRAIGHT_TYPES = [:bool, :string, :integer, :array, :datetime, :enum, :model].freeze
8
8
 
9
9
  ACCEPTED_TYPES = (NESTED_TYPES + STRAIGHT_TYPES).freeze
10
10
 
11
+ _dir = 'rails_api_doc/'
12
+
11
13
  module Controller
12
14
  _dir = 'rails_api_doc/controller/'
13
15
 
@@ -42,6 +44,16 @@ module RailsApiDoc
42
44
  end
43
45
  end
44
46
 
47
+ require _dir + 'params/main'
48
+ class Params
49
+
50
+ _dir = 'rails_api_doc/params/'
51
+
52
+ autoload :DSL, _dir + 'dsl'
53
+ autoload :Finder, _dir + 'finder'
54
+
55
+ end
56
+
45
57
  module Model
46
58
  _dir = 'rails_api_doc/model/'
47
59
 
@@ -49,7 +61,7 @@ module RailsApiDoc
49
61
  autoload :AttributeParser, _dir + 'attribute_parser'
50
62
  end
51
63
 
52
- require 'rails_api_doc/config'
64
+ require _dir + 'config'
53
65
  class Config
54
66
 
55
67
  _dir = 'rails_api_doc/config/'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_api_documentation
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
  - vs
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-14 00:00:00.000000000 Z
11
+ date: 2017-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -184,6 +184,9 @@ files:
184
184
  - lib/rails_api_doc/exception/param_required.rb
185
185
  - lib/rails_api_doc/model/attribute_merger.rb
186
186
  - lib/rails_api_doc/model/attribute_parser.rb
187
+ - lib/rails_api_doc/params/dsl.rb
188
+ - lib/rails_api_doc/params/finder.rb
189
+ - lib/rails_api_doc/params/main.rb
187
190
  - lib/rails_api_doc/railtie.rb
188
191
  - lib/rails_api_doc/version.rb
189
192
  homepage: https://github.com/vshaveyko/rails_api_doc
@@ -193,7 +196,7 @@ metadata: {}
193
196
  post_install_message:
194
197
  rdoc_options: []
195
198
  require_paths:
196
- - lib
199
+ - lib/rails_api_doc.rb
197
200
  required_ruby_version: !ruby/object:Gem::Requirement
198
201
  requirements:
199
202
  - - ">="
@@ -206,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
209
  version: '0'
207
210
  requirements: []
208
211
  rubyforge_project:
209
- rubygems_version: 2.5.1
212
+ rubygems_version: 2.6.8
210
213
  signing_key:
211
214
  specification_version: 4
212
215
  summary: Nice API doc.