grape 2.0.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +151 -1
  3. data/CONTRIBUTING.md +1 -1
  4. data/README.md +404 -334
  5. data/UPGRADING.md +279 -7
  6. data/grape.gemspec +8 -8
  7. data/lib/grape/api/instance.rb +34 -66
  8. data/lib/grape/api.rb +47 -70
  9. data/lib/grape/content_types.rb +13 -10
  10. data/lib/grape/cookies.rb +31 -24
  11. data/lib/grape/dry_types.rb +0 -2
  12. data/lib/grape/dsl/api.rb +0 -2
  13. data/lib/grape/dsl/desc.rb +49 -44
  14. data/lib/grape/dsl/headers.rb +2 -2
  15. data/lib/grape/dsl/helpers.rb +8 -4
  16. data/lib/grape/dsl/inside_route.rb +67 -54
  17. data/lib/grape/dsl/parameters.rb +10 -9
  18. data/lib/grape/dsl/request_response.rb +14 -18
  19. data/lib/grape/dsl/routing.rb +34 -17
  20. data/lib/grape/dsl/validations.rb +13 -0
  21. data/lib/grape/endpoint.rb +120 -118
  22. data/lib/grape/{util/env.rb → env.rb} +0 -5
  23. data/lib/grape/error_formatter/base.rb +51 -21
  24. data/lib/grape/error_formatter/json.rb +7 -15
  25. data/lib/grape/error_formatter/serializable_hash.rb +7 -0
  26. data/lib/grape/error_formatter/txt.rb +11 -17
  27. data/lib/grape/error_formatter/xml.rb +3 -13
  28. data/lib/grape/error_formatter.rb +5 -25
  29. data/lib/grape/exceptions/base.rb +18 -30
  30. data/lib/grape/exceptions/conflicting_types.rb +11 -0
  31. data/lib/grape/exceptions/invalid_parameters.rb +11 -0
  32. data/lib/grape/exceptions/too_deep_parameters.rb +11 -0
  33. data/lib/grape/exceptions/unknown_auth_strategy.rb +11 -0
  34. data/lib/grape/exceptions/unknown_params_builder.rb +11 -0
  35. data/lib/grape/exceptions/validation.rb +5 -6
  36. data/lib/grape/exceptions/validation_array_errors.rb +1 -0
  37. data/lib/grape/exceptions/validation_errors.rb +4 -6
  38. data/lib/grape/extensions/active_support/hash_with_indifferent_access.rb +2 -5
  39. data/lib/grape/extensions/hash.rb +7 -2
  40. data/lib/grape/extensions/hashie/mash.rb +3 -5
  41. data/lib/grape/formatter/base.rb +16 -0
  42. data/lib/grape/formatter/json.rb +4 -6
  43. data/lib/grape/formatter/serializable_hash.rb +1 -1
  44. data/lib/grape/formatter/txt.rb +3 -5
  45. data/lib/grape/formatter/xml.rb +4 -6
  46. data/lib/grape/formatter.rb +7 -25
  47. data/lib/grape/{util/json.rb → json.rb} +1 -3
  48. data/lib/grape/locale/en.yml +46 -42
  49. data/lib/grape/middleware/auth/base.rb +11 -34
  50. data/lib/grape/middleware/auth/dsl.rb +23 -31
  51. data/lib/grape/middleware/base.rb +41 -23
  52. data/lib/grape/middleware/error.rb +77 -76
  53. data/lib/grape/middleware/formatter.rb +48 -79
  54. data/lib/grape/middleware/globals.rb +1 -3
  55. data/lib/grape/middleware/stack.rb +26 -37
  56. data/lib/grape/middleware/versioner/accept_version_header.rb +6 -33
  57. data/lib/grape/middleware/versioner/base.rb +74 -0
  58. data/lib/grape/middleware/versioner/header.rb +59 -126
  59. data/lib/grape/middleware/versioner/param.rb +4 -25
  60. data/lib/grape/middleware/versioner/path.rb +10 -34
  61. data/lib/grape/middleware/versioner.rb +7 -14
  62. data/lib/grape/namespace.rb +4 -5
  63. data/lib/grape/params_builder/base.rb +18 -0
  64. data/lib/grape/params_builder/hash.rb +11 -0
  65. data/lib/grape/params_builder/hash_with_indifferent_access.rb +11 -0
  66. data/lib/grape/params_builder/hashie_mash.rb +11 -0
  67. data/lib/grape/params_builder.rb +32 -0
  68. data/lib/grape/parser/base.rb +16 -0
  69. data/lib/grape/parser/json.rb +6 -8
  70. data/lib/grape/parser/xml.rb +6 -8
  71. data/lib/grape/parser.rb +5 -23
  72. data/lib/grape/path.rb +38 -60
  73. data/lib/grape/request.rb +161 -30
  74. data/lib/grape/router/base_route.rb +39 -0
  75. data/lib/grape/router/greedy_route.rb +20 -0
  76. data/lib/grape/router/pattern.rb +45 -31
  77. data/lib/grape/router/route.rb +28 -57
  78. data/lib/grape/router.rb +56 -43
  79. data/lib/grape/util/base_inheritable.rb +4 -4
  80. data/lib/grape/util/cache.rb +0 -3
  81. data/lib/grape/util/endpoint_configuration.rb +1 -1
  82. data/lib/grape/util/header.rb +13 -0
  83. data/lib/grape/util/inheritable_values.rb +0 -2
  84. data/lib/grape/util/lazy/block.rb +29 -0
  85. data/lib/grape/util/lazy/value.rb +38 -0
  86. data/lib/grape/util/lazy/value_array.rb +21 -0
  87. data/lib/grape/util/lazy/value_enumerable.rb +34 -0
  88. data/lib/grape/util/lazy/value_hash.rb +21 -0
  89. data/lib/grape/util/media_type.rb +70 -0
  90. data/lib/grape/util/registry.rb +27 -0
  91. data/lib/grape/util/reverse_stackable_values.rb +1 -6
  92. data/lib/grape/util/stackable_values.rb +1 -6
  93. data/lib/grape/util/strict_hash_configuration.rb +3 -3
  94. data/lib/grape/validations/attributes_doc.rb +38 -36
  95. data/lib/grape/validations/attributes_iterator.rb +1 -0
  96. data/lib/grape/validations/contract_scope.rb +34 -0
  97. data/lib/grape/validations/params_scope.rb +36 -32
  98. data/lib/grape/validations/types/array_coercer.rb +0 -2
  99. data/lib/grape/validations/types/dry_type_coercer.rb +9 -15
  100. data/lib/grape/validations/types/json.rb +0 -2
  101. data/lib/grape/validations/types/primitive_coercer.rb +0 -2
  102. data/lib/grape/validations/types/set_coercer.rb +0 -3
  103. data/lib/grape/validations/types.rb +0 -3
  104. data/lib/grape/validations/validator_factory.rb +2 -2
  105. data/lib/grape/validations/validators/allow_blank_validator.rb +1 -1
  106. data/lib/grape/validations/validators/base.rb +8 -11
  107. data/lib/grape/validations/validators/coerce_validator.rb +1 -1
  108. data/lib/grape/validations/validators/contract_scope_validator.rb +41 -0
  109. data/lib/grape/validations/validators/default_validator.rb +6 -2
  110. data/lib/grape/validations/validators/exactly_one_of_validator.rb +1 -1
  111. data/lib/grape/validations/validators/except_values_validator.rb +2 -2
  112. data/lib/grape/validations/validators/length_validator.rb +49 -0
  113. data/lib/grape/validations/validators/presence_validator.rb +1 -1
  114. data/lib/grape/validations/validators/regexp_validator.rb +2 -2
  115. data/lib/grape/validations/validators/values_validator.rb +20 -57
  116. data/lib/grape/validations.rb +8 -21
  117. data/lib/grape/version.rb +1 -1
  118. data/lib/grape/{util/xml.rb → xml.rb} +1 -1
  119. data/lib/grape.rb +42 -274
  120. metadata +45 -44
  121. data/lib/grape/eager_load.rb +0 -20
  122. data/lib/grape/http/headers.rb +0 -71
  123. data/lib/grape/middleware/helpers.rb +0 -12
  124. data/lib/grape/middleware/versioner/parse_media_type_patch.rb +0 -24
  125. data/lib/grape/router/attribute_translator.rb +0 -63
  126. data/lib/grape/util/lazy_block.rb +0 -27
  127. data/lib/grape/util/lazy_object.rb +0 -43
  128. data/lib/grape/util/lazy_value.rb +0 -91
  129. data/lib/grape/util/registrable.rb +0 -15
  130. data/lib/grape/validations/types/build_coercer.rb +0 -94
@@ -4,23 +4,8 @@ module Grape
4
4
  module Validations
5
5
  module Validators
6
6
  class ValuesValidator < Base
7
- def initialize(attrs, options, required, scope, **opts)
8
- if options.is_a?(Hash)
9
- @excepts = options[:except]
10
- @values = options[:value]
11
- @proc = options[:proc]
12
-
13
- Grape.deprecator.warn('The values validator except option is deprecated. Use the except validator instead.') if @excepts
14
-
15
- raise ArgumentError, 'proc must be a Proc' if @proc && !@proc.is_a?(Proc)
16
-
17
- Grape.deprecator.warn('The values validator proc option is deprecated. The lambda expression can now be assigned directly to values.') if @proc
18
- else
19
- @excepts = nil
20
- @values = nil
21
- @proc = nil
22
- @values = options
23
- end
7
+ def initialize(attrs, options, required, scope, opts)
8
+ @values = options.is_a?(Hash) ? options[:value] : options
24
9
  super
25
10
  end
26
11
 
@@ -31,65 +16,43 @@ module Grape
31
16
 
32
17
  return if val.nil? && !required_for_root_scope?
33
18
 
19
+ val = val.scrub if val.respond_to?(:scrub)
20
+
34
21
  # don't forget that +false.blank?+ is true
35
22
  return if val != false && val.blank? && @allow_blank
36
23
 
37
- param_array = val.nil? ? [nil] : Array.wrap(val)
38
-
39
- raise validation_exception(attr_name, except_message) \
40
- unless check_excepts(param_array)
41
-
42
- raise validation_exception(attr_name, message(:values)) \
43
- unless check_values(param_array, attr_name)
24
+ return if check_values?(val, attr_name)
44
25
 
45
- raise validation_exception(attr_name, message(:values)) \
46
- if @proc && !validate_proc(@proc, param_array)
26
+ raise Grape::Exceptions::Validation.new(
27
+ params: [@scope.full_name(attr_name)],
28
+ message: message(:values)
29
+ )
47
30
  end
48
31
 
49
32
  private
50
33
 
51
- def check_values(param_array, attr_name)
34
+ def check_values?(val, attr_name)
52
35
  values = @values.is_a?(Proc) && @values.arity.zero? ? @values.call : @values
53
36
  return true if values.nil?
54
37
 
38
+ param_array = val.nil? ? [nil] : Array.wrap(val)
39
+ return param_array.all? { |param| values.include?(param) } unless values.is_a?(Proc)
40
+
55
41
  begin
56
- return param_array.all? { |param| values.call(param) } if values.is_a? Proc
42
+ param_array.all? { |param| values.call(param) }
57
43
  rescue StandardError => e
58
44
  warn "Error '#{e}' raised while validating attribute '#{attr_name}'"
59
- return false
45
+ false
60
46
  end
61
- param_array.all? { |param| values.include?(param) }
62
- end
63
-
64
- def check_excepts(param_array)
65
- excepts = @excepts.is_a?(Proc) ? @excepts.call : @excepts
66
- return true if excepts.nil?
67
-
68
- param_array.none? { |param| excepts.include?(param) }
69
- end
70
-
71
- def validate_proc(proc, param_array)
72
- case proc.arity
73
- when 0
74
- param_array.all? { |_param| proc.call }
75
- when 1
76
- param_array.all? { |param| proc.call(param) }
77
- else
78
- raise ArgumentError, 'proc arity must be 0 or 1'
79
- end
80
- end
81
-
82
- def except_message
83
- options = instance_variable_get(:@option)
84
- options_key?(:except_message) ? options[:except_message] : message(:except_values)
85
47
  end
86
48
 
87
49
  def required_for_root_scope?
88
- @required && @scope.root?
89
- end
50
+ return false unless @required
51
+
52
+ scope = @scope
53
+ scope = scope.parent while scope.lateral?
90
54
 
91
- def validation_exception(attr_name, message)
92
- Grape::Exceptions::Validation.new(params: [@scope.full_name(attr_name)], message: message)
55
+ scope.root?
93
56
  end
94
57
  end
95
58
  end
@@ -1,34 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Grape
4
- # Registry to store and locate known Validators.
5
4
  module Validations
5
+ extend Grape::Util::Registry
6
+
6
7
  module_function
7
8
 
8
- def validators
9
- @validators ||= {}
10
- end
9
+ def require_validator(short_name)
10
+ raise Grape::Exceptions::UnknownValidator, short_name unless registry.key?(short_name)
11
11
 
12
- # Register a new validator, so it can be used to validate parameters.
13
- # @param short_name [String] all lower-case, no spaces
14
- # @param klass [Class] the validator class. Should inherit from
15
- # Validations::Base.
16
- def register_validator(short_name, klass)
17
- validators[short_name] = klass
12
+ registry[short_name]
18
13
  end
19
14
 
20
- def deregister_validator(short_name)
21
- validators.delete(short_name)
22
- end
15
+ def build_short_name(klass)
16
+ return if klass.name.blank?
23
17
 
24
- # Find a validator and if not found will try to load it
25
- def require_validator(short_name)
26
- str_name = short_name.to_s
27
- validators.fetch(str_name) do
28
- Grape::Validations::Validators.const_get("#{str_name.camelize}Validator")
29
- end
30
- rescue NameError
31
- raise Grape::Exceptions::UnknownValidator.new(short_name)
18
+ klass.name.demodulize.underscore.delete_suffix('_validator')
32
19
  end
33
20
  end
34
21
  end
data/lib/grape/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Grape
4
4
  # The current version of Grape.
5
- VERSION = '2.0.0'
5
+ VERSION = '2.4.0'
6
6
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Grape
4
- if Object.const_defined? :MultiXml
4
+ if defined?(::MultiXml)
5
5
  Xml = ::MultiXml
6
6
  else
7
7
  Xml = ::ActiveSupport::XmlMini
data/lib/grape.rb CHANGED
@@ -1,13 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'logger'
4
- require 'rack'
5
- require 'rack/builder'
6
- require 'rack/accept'
7
- require 'rack/auth/basic'
8
- require 'set'
9
- require 'bigdecimal'
10
- require 'date'
11
4
  require 'active_support'
12
5
  require 'active_support/concern'
13
6
  require 'active_support/configurable'
@@ -24,295 +17,70 @@ require 'active_support/core_ext/hash/indifferent_access'
24
17
  require 'active_support/core_ext/hash/keys'
25
18
  require 'active_support/core_ext/hash/reverse_merge'
26
19
  require 'active_support/core_ext/hash/slice'
20
+ require 'active_support/core_ext/module/delegation'
27
21
  require 'active_support/core_ext/object/blank'
28
22
  require 'active_support/core_ext/object/deep_dup'
23
+ require 'active_support/core_ext/object/try'
29
24
  require 'active_support/core_ext/object/duplicable'
25
+ require 'active_support/core_ext/string/output_safety'
30
26
  require 'active_support/core_ext/string/exclude'
31
- require 'active_support/dependencies/autoload'
32
27
  require 'active_support/deprecation'
33
28
  require 'active_support/inflector'
29
+ require 'active_support/ordered_options'
34
30
  require 'active_support/notifications'
35
- require 'i18n'
31
+
32
+ require 'English'
33
+ require 'bigdecimal'
34
+ require 'date'
35
+ require 'dry-types'
36
+ require 'forwardable'
37
+ require 'json'
38
+ require 'mustermann/grape'
39
+ require 'pathname'
40
+ require 'rack'
41
+ require 'rack/auth/basic'
42
+ require 'rack/builder'
43
+ require 'rack/head'
44
+ require 'set'
45
+ require 'singleton'
46
+ require 'zeitwerk'
47
+
48
+ loader = Zeitwerk::Loader.for_gem
49
+ loader.inflector.inflect(
50
+ 'api' => 'API',
51
+ 'dsl' => 'DSL'
52
+ )
53
+ railtie = "#{__dir__}/grape/railtie.rb"
54
+ loader.do_not_eager_load(railtie)
55
+ loader.setup
36
56
 
37
57
  I18n.load_path << File.expand_path('grape/locale/en.yml', __dir__)
38
58
 
39
59
  module Grape
40
60
  include ActiveSupport::Configurable
41
- extend ::ActiveSupport::Autoload
61
+
62
+ HTTP_SUPPORTED_METHODS = [
63
+ Rack::GET,
64
+ Rack::POST,
65
+ Rack::PUT,
66
+ Rack::PATCH,
67
+ Rack::DELETE,
68
+ Rack::HEAD,
69
+ Rack::OPTIONS
70
+ ].freeze
42
71
 
43
72
  def self.deprecator
44
73
  @deprecator ||= ActiveSupport::Deprecation.new('2.0', 'Grape')
45
74
  end
46
75
 
47
- def self.lowercase_headers?
48
- Rack::CONTENT_TYPE == 'content-type'
49
- end
50
-
51
- eager_autoload do
52
- autoload :API
53
- autoload :Endpoint
54
-
55
- autoload :Namespace
56
-
57
- autoload :Path
58
- autoload :Cookies
59
- autoload :Validations
60
- autoload :ErrorFormatter
61
- autoload :Formatter
62
- autoload :Parser
63
- autoload :Request
64
- autoload :Env, 'grape/util/env'
65
- autoload :Json, 'grape/util/json'
66
- autoload :Xml, 'grape/util/xml'
67
- autoload :DryTypes
68
- end
69
-
70
- module Http
71
- extend ::ActiveSupport::Autoload
72
- eager_autoload do
73
- autoload :Headers
74
- end
75
- end
76
-
77
- module Exceptions
78
- extend ::ActiveSupport::Autoload
79
- eager_autoload do
80
- autoload :Base
81
- autoload :Validation
82
- autoload :ValidationArrayErrors
83
- autoload :ValidationErrors
84
- autoload :MissingVendorOption
85
- autoload :MissingMimeType
86
- autoload :MissingOption
87
- autoload :InvalidFormatter
88
- autoload :InvalidVersionerOption
89
- autoload :UnknownValidator
90
- autoload :UnknownOptions
91
- autoload :UnknownParameter
92
- autoload :InvalidWithOptionForRepresent
93
- autoload :IncompatibleOptionValues
94
- autoload :MissingGroupType
95
- autoload :UnsupportedGroupType
96
- autoload :InvalidMessageBody
97
- autoload :InvalidAcceptHeader
98
- autoload :InvalidVersionHeader
99
- autoload :MethodNotAllowed
100
- autoload :InvalidResponse
101
- autoload :EmptyMessageBody
102
- autoload :TooManyMultipartFiles
103
- autoload :MissingGroupTypeError, 'grape/exceptions/missing_group_type'
104
- autoload :UnsupportedGroupTypeError, 'grape/exceptions/unsupported_group_type'
105
- end
106
- end
107
-
108
- module Extensions
109
- extend ::ActiveSupport::Autoload
110
- eager_autoload do
111
- autoload :Hash
112
- end
113
- module ActiveSupport
114
- extend ::ActiveSupport::Autoload
115
- eager_autoload do
116
- autoload :HashWithIndifferentAccess
117
- end
118
- end
119
-
120
- module Hashie
121
- extend ::ActiveSupport::Autoload
122
- eager_autoload do
123
- autoload :Mash
124
- end
125
- end
126
- end
127
-
128
- module Middleware
129
- extend ::ActiveSupport::Autoload
130
- eager_autoload do
131
- autoload :Base
132
- autoload :Versioner
133
- autoload :Formatter
134
- autoload :Error
135
- autoload :Globals
136
- autoload :Stack
137
- autoload :Helpers
138
- end
139
-
140
- module Auth
141
- extend ::ActiveSupport::Autoload
142
- eager_autoload do
143
- autoload :Base
144
- autoload :DSL
145
- autoload :StrategyInfo
146
- autoload :Strategies
147
- end
148
- end
149
-
150
- module Versioner
151
- extend ::ActiveSupport::Autoload
152
- eager_autoload do
153
- autoload :Path
154
- autoload :Header
155
- autoload :Param
156
- autoload :AcceptVersionHeader
157
- end
158
- end
159
- end
160
-
161
- module Util
162
- extend ::ActiveSupport::Autoload
163
- eager_autoload do
164
- autoload :InheritableValues
165
- autoload :StackableValues
166
- autoload :ReverseStackableValues
167
- autoload :InheritableSetting
168
- autoload :StrictHashConfiguration
169
- autoload :Registrable
170
- end
171
- end
172
-
173
- module ErrorFormatter
174
- extend ::ActiveSupport::Autoload
175
- eager_autoload do
176
- autoload :Base
177
- autoload :Json
178
- autoload :Txt
179
- autoload :Xml
180
- end
181
- end
182
-
183
- module Formatter
184
- extend ::ActiveSupport::Autoload
185
- eager_autoload do
186
- autoload :Json
187
- autoload :SerializableHash
188
- autoload :Txt
189
- autoload :Xml
190
- end
191
- end
192
-
193
- module Parser
194
- extend ::ActiveSupport::Autoload
195
- eager_autoload do
196
- autoload :Json
197
- autoload :Xml
198
- end
199
- end
200
-
201
- module DSL
202
- extend ::ActiveSupport::Autoload
203
- eager_autoload do
204
- autoload :API
205
- autoload :Callbacks
206
- autoload :Settings
207
- autoload :Configuration
208
- autoload :InsideRoute
209
- autoload :Helpers
210
- autoload :Middleware
211
- autoload :Parameters
212
- autoload :RequestResponse
213
- autoload :Routing
214
- autoload :Validations
215
- autoload :Logger
216
- autoload :Desc
217
- end
218
- end
219
-
220
- class API
221
- extend ::ActiveSupport::Autoload
222
- eager_autoload do
223
- autoload :Helpers
224
- end
225
- end
226
-
227
- module Presenters
228
- extend ::ActiveSupport::Autoload
229
- eager_autoload do
230
- autoload :Presenter
231
- end
232
- end
233
-
234
- module ServeStream
235
- extend ::ActiveSupport::Autoload
236
- eager_autoload do
237
- autoload :FileBody
238
- autoload :SendfileResponse
239
- autoload :StreamResponse
240
- end
241
- end
242
-
243
- module Validations
244
- extend ::ActiveSupport::Autoload
245
-
246
- eager_autoload do
247
- autoload :AttributesIterator
248
- autoload :MultipleAttributesIterator
249
- autoload :SingleAttributeIterator
250
- autoload :Types
251
- autoload :ParamsScope
252
- autoload :ValidatorFactory
253
- autoload :Base, 'grape/validations/validators/base'
254
- end
255
-
256
- module Types
257
- extend ::ActiveSupport::Autoload
258
-
259
- eager_autoload do
260
- autoload :InvalidValue
261
- autoload :DryTypeCoercer
262
- autoload :ArrayCoercer
263
- autoload :SetCoercer
264
- autoload :PrimitiveCoercer
265
- autoload :CustomTypeCoercer
266
- autoload :CustomTypeCollectionCoercer
267
- autoload :MultipleTypeCoercer
268
- autoload :VariantCollectionCoercer
269
- end
270
- end
271
-
272
- module Validators
273
- extend ::ActiveSupport::Autoload
274
-
275
- eager_autoload do
276
- autoload :Base
277
- autoload :MultipleParamsBase
278
- autoload :AllOrNoneOfValidator
279
- autoload :AllowBlankValidator
280
- autoload :AsValidator
281
- autoload :AtLeastOneOfValidator
282
- autoload :CoerceValidator
283
- autoload :DefaultValidator
284
- autoload :ExactlyOneOfValidator
285
- autoload :ExceptValuesValidator
286
- autoload :MutualExclusionValidator
287
- autoload :PresenceValidator
288
- autoload :RegexpValidator
289
- autoload :SameAsValidator
290
- autoload :ValuesValidator
291
- end
292
- end
293
- end
294
-
295
- module Types
296
- extend ::ActiveSupport::Autoload
297
-
298
- eager_autoload do
299
- autoload :InvalidValue
300
- end
301
- end
302
-
303
76
  configure do |config|
304
- config.param_builder = Grape::Extensions::ActiveSupport::HashWithIndifferentAccess::ParamBuilder
77
+ config.param_builder = :hash_with_indifferent_access
78
+ config.lint = false
305
79
  config.compile_methods!
306
80
  end
307
81
  end
308
82
 
309
- require 'grape/content_types'
310
-
311
- require 'grape/util/lazy_value'
312
- require 'grape/util/lazy_block'
313
- require 'grape/util/endpoint_configuration'
314
- require 'grape/version'
315
-
316
83
  # https://api.rubyonrails.org/classes/ActiveSupport/Deprecation.html
317
84
  # adding Grape.deprecator to Rails App if any
318
85
  require 'grape/railtie' if defined?(Rails::Railtie) && ActiveSupport.gem_version >= Gem::Version.new('7.1')
86
+ loader.eager_load