grape 1.8.0 → 2.1.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 (210) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +65 -1
  3. data/README.md +377 -334
  4. data/UPGRADING.md +231 -6
  5. data/grape.gemspec +6 -10
  6. data/lib/grape/api/instance.rb +13 -10
  7. data/lib/grape/api.rb +17 -8
  8. data/lib/grape/content_types.rb +0 -2
  9. data/lib/grape/cookies.rb +2 -1
  10. data/lib/grape/dry_types.rb +0 -2
  11. data/lib/grape/dsl/desc.rb +23 -21
  12. data/lib/grape/dsl/headers.rb +1 -1
  13. data/lib/grape/dsl/inside_route.rb +47 -22
  14. data/lib/grape/dsl/parameters.rb +4 -3
  15. data/lib/grape/dsl/routing.rb +20 -4
  16. data/lib/grape/dsl/validations.rb +13 -0
  17. data/lib/grape/endpoint.rb +15 -10
  18. data/lib/grape/{util/env.rb → env.rb} +0 -5
  19. data/lib/grape/error_formatter/txt.rb +11 -10
  20. data/lib/grape/exceptions/base.rb +3 -3
  21. data/lib/grape/exceptions/missing_group_type.rb +1 -1
  22. data/lib/grape/exceptions/unsupported_group_type.rb +1 -1
  23. data/lib/grape/exceptions/validation.rb +0 -2
  24. data/lib/grape/exceptions/validation_array_errors.rb +1 -0
  25. data/lib/grape/exceptions/validation_errors.rb +1 -3
  26. data/lib/grape/extensions/hash.rb +5 -1
  27. data/lib/grape/http/headers.rb +18 -24
  28. data/lib/grape/{util/json.rb → json.rb} +1 -3
  29. data/lib/grape/locale/en.yml +3 -0
  30. data/lib/grape/middleware/auth/base.rb +0 -2
  31. data/lib/grape/middleware/auth/dsl.rb +0 -2
  32. data/lib/grape/middleware/auth/strategies.rb +1 -2
  33. data/lib/grape/middleware/base.rb +0 -2
  34. data/lib/grape/middleware/error.rb +55 -50
  35. data/lib/grape/middleware/formatter.rb +21 -18
  36. data/lib/grape/middleware/globals.rb +1 -3
  37. data/lib/grape/middleware/stack.rb +2 -3
  38. data/lib/grape/middleware/versioner/accept_version_header.rb +0 -2
  39. data/lib/grape/middleware/versioner/header.rb +17 -163
  40. data/lib/grape/middleware/versioner/param.rb +2 -4
  41. data/lib/grape/middleware/versioner/path.rb +1 -3
  42. data/lib/grape/namespace.rb +3 -4
  43. data/lib/grape/path.rb +24 -29
  44. data/lib/grape/railtie.rb +9 -0
  45. data/lib/grape/request.rb +3 -5
  46. data/lib/grape/router/base_route.rb +39 -0
  47. data/lib/grape/router/greedy_route.rb +20 -0
  48. data/lib/grape/router/pattern.rb +39 -30
  49. data/lib/grape/router/route.rb +22 -59
  50. data/lib/grape/router.rb +30 -36
  51. data/lib/grape/util/accept/header.rb +19 -0
  52. data/lib/grape/util/accept_header_handler.rb +105 -0
  53. data/lib/grape/util/base_inheritable.rb +4 -4
  54. data/lib/grape/util/cache.rb +0 -3
  55. data/lib/grape/util/endpoint_configuration.rb +1 -1
  56. data/lib/grape/util/header.rb +13 -0
  57. data/lib/grape/util/inheritable_values.rb +0 -2
  58. data/lib/grape/util/lazy/block.rb +29 -0
  59. data/lib/grape/util/lazy/object.rb +45 -0
  60. data/lib/grape/util/lazy/value.rb +38 -0
  61. data/lib/grape/util/lazy/value_array.rb +21 -0
  62. data/lib/grape/util/lazy/value_enumerable.rb +34 -0
  63. data/lib/grape/util/lazy/value_hash.rb +21 -0
  64. data/lib/grape/util/media_type.rb +70 -0
  65. data/lib/grape/util/reverse_stackable_values.rb +1 -6
  66. data/lib/grape/util/stackable_values.rb +1 -6
  67. data/lib/grape/util/strict_hash_configuration.rb +3 -3
  68. data/lib/grape/validations/attributes_doc.rb +38 -36
  69. data/lib/grape/validations/contract_scope.rb +71 -0
  70. data/lib/grape/validations/params_scope.rb +10 -9
  71. data/lib/grape/validations/types/array_coercer.rb +0 -2
  72. data/lib/grape/validations/types/build_coercer.rb +69 -71
  73. data/lib/grape/validations/types/dry_type_coercer.rb +1 -11
  74. data/lib/grape/validations/types/json.rb +0 -2
  75. data/lib/grape/validations/types/primitive_coercer.rb +0 -2
  76. data/lib/grape/validations/types/set_coercer.rb +0 -3
  77. data/lib/grape/validations/types.rb +0 -3
  78. data/lib/grape/validations/validators/base.rb +2 -1
  79. data/lib/grape/validations/validators/default_validator.rb +5 -1
  80. data/lib/grape/validations/validators/length_validator.rb +42 -0
  81. data/lib/grape/validations/validators/values_validator.rb +8 -3
  82. data/lib/grape/validations.rb +3 -7
  83. data/lib/grape/version.rb +1 -1
  84. data/lib/grape/{util/xml.rb → xml.rb} +1 -1
  85. data/lib/grape.rb +38 -269
  86. metadata +33 -274
  87. data/lib/grape/eager_load.rb +0 -20
  88. data/lib/grape/middleware/versioner/parse_media_type_patch.rb +0 -24
  89. data/lib/grape/router/attribute_translator.rb +0 -63
  90. data/lib/grape/util/lazy_block.rb +0 -27
  91. data/lib/grape/util/lazy_object.rb +0 -43
  92. data/lib/grape/util/lazy_value.rb +0 -91
  93. data/spec/grape/api/custom_validations_spec.rb +0 -213
  94. data/spec/grape/api/deeply_included_options_spec.rb +0 -56
  95. data/spec/grape/api/defines_boolean_in_params_spec.rb +0 -38
  96. data/spec/grape/api/documentation_spec.rb +0 -59
  97. data/spec/grape/api/inherited_helpers_spec.rb +0 -114
  98. data/spec/grape/api/instance_spec.rb +0 -103
  99. data/spec/grape/api/invalid_format_spec.rb +0 -45
  100. data/spec/grape/api/namespace_parameters_in_route_spec.rb +0 -38
  101. data/spec/grape/api/nested_helpers_spec.rb +0 -50
  102. data/spec/grape/api/optional_parameters_in_route_spec.rb +0 -43
  103. data/spec/grape/api/parameters_modification_spec.rb +0 -41
  104. data/spec/grape/api/patch_method_helpers_spec.rb +0 -79
  105. data/spec/grape/api/recognize_path_spec.rb +0 -21
  106. data/spec/grape/api/required_parameters_in_route_spec.rb +0 -37
  107. data/spec/grape/api/required_parameters_with_invalid_method_spec.rb +0 -26
  108. data/spec/grape/api/routes_with_requirements_spec.rb +0 -59
  109. data/spec/grape/api/shared_helpers_exactly_one_of_spec.rb +0 -41
  110. data/spec/grape/api/shared_helpers_spec.rb +0 -36
  111. data/spec/grape/api_remount_spec.rb +0 -509
  112. data/spec/grape/api_spec.rb +0 -4356
  113. data/spec/grape/dsl/callbacks_spec.rb +0 -45
  114. data/spec/grape/dsl/desc_spec.rb +0 -98
  115. data/spec/grape/dsl/headers_spec.rb +0 -62
  116. data/spec/grape/dsl/helpers_spec.rb +0 -100
  117. data/spec/grape/dsl/inside_route_spec.rb +0 -531
  118. data/spec/grape/dsl/logger_spec.rb +0 -24
  119. data/spec/grape/dsl/middleware_spec.rb +0 -60
  120. data/spec/grape/dsl/parameters_spec.rb +0 -180
  121. data/spec/grape/dsl/request_response_spec.rb +0 -225
  122. data/spec/grape/dsl/routing_spec.rb +0 -275
  123. data/spec/grape/dsl/settings_spec.rb +0 -261
  124. data/spec/grape/dsl/validations_spec.rb +0 -55
  125. data/spec/grape/endpoint/declared_spec.rb +0 -846
  126. data/spec/grape/endpoint_spec.rb +0 -1085
  127. data/spec/grape/entity_spec.rb +0 -336
  128. data/spec/grape/exceptions/base_spec.rb +0 -81
  129. data/spec/grape/exceptions/body_parse_errors_spec.rb +0 -185
  130. data/spec/grape/exceptions/invalid_accept_header_spec.rb +0 -358
  131. data/spec/grape/exceptions/invalid_formatter_spec.rb +0 -15
  132. data/spec/grape/exceptions/invalid_response_spec.rb +0 -11
  133. data/spec/grape/exceptions/invalid_versioner_option_spec.rb +0 -15
  134. data/spec/grape/exceptions/missing_group_type_spec.rb +0 -17
  135. data/spec/grape/exceptions/missing_mime_type_spec.rb +0 -17
  136. data/spec/grape/exceptions/missing_option_spec.rb +0 -15
  137. data/spec/grape/exceptions/unknown_options_spec.rb +0 -15
  138. data/spec/grape/exceptions/unknown_validator_spec.rb +0 -15
  139. data/spec/grape/exceptions/unsupported_group_type_spec.rb +0 -19
  140. data/spec/grape/exceptions/validation_errors_spec.rb +0 -92
  141. data/spec/grape/exceptions/validation_spec.rb +0 -19
  142. data/spec/grape/extensions/param_builders/hash_spec.rb +0 -83
  143. data/spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb +0 -105
  144. data/spec/grape/extensions/param_builders/hashie/mash_spec.rb +0 -79
  145. data/spec/grape/grape_spec.rb +0 -9
  146. data/spec/grape/integration/global_namespace_function_spec.rb +0 -29
  147. data/spec/grape/integration/rack_sendfile_spec.rb +0 -48
  148. data/spec/grape/integration/rack_spec.rb +0 -51
  149. data/spec/grape/loading_spec.rb +0 -44
  150. data/spec/grape/middleware/auth/base_spec.rb +0 -31
  151. data/spec/grape/middleware/auth/dsl_spec.rb +0 -60
  152. data/spec/grape/middleware/auth/strategies_spec.rb +0 -120
  153. data/spec/grape/middleware/base_spec.rb +0 -221
  154. data/spec/grape/middleware/error_spec.rb +0 -85
  155. data/spec/grape/middleware/exception_spec.rb +0 -294
  156. data/spec/grape/middleware/formatter_spec.rb +0 -461
  157. data/spec/grape/middleware/globals_spec.rb +0 -30
  158. data/spec/grape/middleware/stack_spec.rb +0 -155
  159. data/spec/grape/middleware/versioner/accept_version_header_spec.rb +0 -122
  160. data/spec/grape/middleware/versioner/header_spec.rb +0 -345
  161. data/spec/grape/middleware/versioner/param_spec.rb +0 -171
  162. data/spec/grape/middleware/versioner/path_spec.rb +0 -62
  163. data/spec/grape/middleware/versioner_spec.rb +0 -21
  164. data/spec/grape/named_api_spec.rb +0 -19
  165. data/spec/grape/parser_spec.rb +0 -86
  166. data/spec/grape/path_spec.rb +0 -252
  167. data/spec/grape/presenters/presenter_spec.rb +0 -71
  168. data/spec/grape/request_spec.rb +0 -126
  169. data/spec/grape/util/inheritable_setting_spec.rb +0 -242
  170. data/spec/grape/util/inheritable_values_spec.rb +0 -79
  171. data/spec/grape/util/reverse_stackable_values_spec.rb +0 -134
  172. data/spec/grape/util/stackable_values_spec.rb +0 -128
  173. data/spec/grape/util/strict_hash_configuration_spec.rb +0 -38
  174. data/spec/grape/validations/attributes_doc_spec.rb +0 -153
  175. data/spec/grape/validations/instance_behaivour_spec.rb +0 -43
  176. data/spec/grape/validations/multiple_attributes_iterator_spec.rb +0 -38
  177. data/spec/grape/validations/params_scope_spec.rb +0 -1420
  178. data/spec/grape/validations/single_attribute_iterator_spec.rb +0 -56
  179. data/spec/grape/validations/types/array_coercer_spec.rb +0 -33
  180. data/spec/grape/validations/types/primitive_coercer_spec.rb +0 -150
  181. data/spec/grape/validations/types/set_coercer_spec.rb +0 -32
  182. data/spec/grape/validations/types_spec.rb +0 -111
  183. data/spec/grape/validations/validators/all_or_none_spec.rb +0 -162
  184. data/spec/grape/validations/validators/allow_blank_spec.rb +0 -575
  185. data/spec/grape/validations/validators/at_least_one_of_spec.rb +0 -205
  186. data/spec/grape/validations/validators/base_spec.rb +0 -38
  187. data/spec/grape/validations/validators/coerce_spec.rb +0 -1261
  188. data/spec/grape/validations/validators/default_spec.rb +0 -463
  189. data/spec/grape/validations/validators/exactly_one_of_spec.rb +0 -233
  190. data/spec/grape/validations/validators/except_values_spec.rb +0 -192
  191. data/spec/grape/validations/validators/mutual_exclusion_spec.rb +0 -214
  192. data/spec/grape/validations/validators/presence_spec.rb +0 -315
  193. data/spec/grape/validations/validators/regexp_spec.rb +0 -161
  194. data/spec/grape/validations/validators/same_as_spec.rb +0 -57
  195. data/spec/grape/validations/validators/values_spec.rb +0 -733
  196. data/spec/grape/validations/validators/zh-CN.yml +0 -10
  197. data/spec/grape/validations_spec.rb +0 -2030
  198. data/spec/integration/eager_load/eager_load_spec.rb +0 -15
  199. data/spec/integration/multi_json/json_spec.rb +0 -7
  200. data/spec/integration/multi_xml/xml_spec.rb +0 -7
  201. data/spec/shared/deprecated_class_examples.rb +0 -16
  202. data/spec/shared/versioning_examples.rb +0 -215
  203. data/spec/spec_helper.rb +0 -52
  204. data/spec/support/basic_auth_encode_helpers.rb +0 -11
  205. data/spec/support/chunks.rb +0 -14
  206. data/spec/support/content_type_helpers.rb +0 -15
  207. data/spec/support/endpoint_faker.rb +0 -25
  208. data/spec/support/file_streamer.rb +0 -13
  209. data/spec/support/integer_helpers.rb +0 -13
  210. data/spec/support/versioned_helpers.rb +0 -55
@@ -59,6 +59,7 @@ module Grape
59
59
  end
60
60
 
61
61
  def self.inherited(klass)
62
+ super
62
63
  return if klass.name.blank?
63
64
 
64
65
  short_validator_name = klass.name.demodulize.underscore.delete_suffix('_validator')
@@ -85,7 +86,7 @@ end
85
86
 
86
87
  Grape::Validations::Base = Class.new(Grape::Validations::Validators::Base) do
87
88
  def self.inherited(*)
88
- ActiveSupport::Deprecation.warn 'Grape::Validations::Base is deprecated! Use Grape::Validations::Validators::Base instead.'
89
+ Grape.deprecator.warn 'Grape::Validations::Base is deprecated! Use Grape::Validations::Validators::Base instead.'
89
90
  super
90
91
  end
91
92
  end
@@ -11,7 +11,11 @@ module Grape
11
11
 
12
12
  def validate_param!(attr_name, params)
13
13
  params[attr_name] = if @default.is_a? Proc
14
- @default.call
14
+ if @default.parameters.empty?
15
+ @default.call
16
+ else
17
+ @default.call(params)
18
+ end
15
19
  elsif @default.frozen? || !@default.duplicable?
16
20
  @default
17
21
  else
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Grape
4
+ module Validations
5
+ module Validators
6
+ class LengthValidator < Base
7
+ def initialize(attrs, options, required, scope, **opts)
8
+ @min = options[:min]
9
+ @max = options[:max]
10
+
11
+ super
12
+
13
+ raise ArgumentError, 'min must be an integer greater than or equal to zero' if !@min.nil? && (!@min.is_a?(Integer) || @min.negative?)
14
+ raise ArgumentError, 'max must be an integer greater than or equal to zero' if !@max.nil? && (!@max.is_a?(Integer) || @max.negative?)
15
+ raise ArgumentError, "min #{@min} cannot be greater than max #{@max}" if !@min.nil? && !@max.nil? && @min > @max
16
+ end
17
+
18
+ def validate_param!(attr_name, params)
19
+ param = params[attr_name]
20
+
21
+ raise ArgumentError, "parameter #{param} does not support #length" unless param.respond_to?(:length)
22
+
23
+ return unless (!@min.nil? && param.length < @min) || (!@max.nil? && param.length > @max)
24
+
25
+ raise Grape::Exceptions::Validation.new(params: [@scope.full_name(attr_name)], message: build_message)
26
+ end
27
+
28
+ def build_message
29
+ if options_key?(:message)
30
+ @option[:message]
31
+ elsif @min && @max
32
+ format I18n.t(:length, scope: 'grape.errors.messages'), min: @min, max: @max
33
+ elsif @min
34
+ format I18n.t(:length_min, scope: 'grape.errors.messages'), min: @min
35
+ else
36
+ format I18n.t(:length_max, scope: 'grape.errors.messages'), max: @max
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -10,11 +10,11 @@ module Grape
10
10
  @values = options[:value]
11
11
  @proc = options[:proc]
12
12
 
13
- ActiveSupport::Deprecation.warn('The values validator except option is deprecated. Use the except validator instead.') if @excepts
13
+ Grape.deprecator.warn('The values validator except option is deprecated. Use the except validator instead.') if @excepts
14
14
 
15
15
  raise ArgumentError, 'proc must be a Proc' if @proc && !@proc.is_a?(Proc)
16
16
 
17
- ActiveSupport::Deprecation.warn('The values validator proc option is deprecated. The lambda expression can now be assigned directly to values.') if @proc
17
+ Grape.deprecator.warn('The values validator proc option is deprecated. The lambda expression can now be assigned directly to values.') if @proc
18
18
  else
19
19
  @excepts = nil
20
20
  @values = nil
@@ -85,7 +85,12 @@ module Grape
85
85
  end
86
86
 
87
87
  def required_for_root_scope?
88
- @required && @scope.root?
88
+ return false unless @required
89
+
90
+ scope = @scope
91
+ scope = scope.parent while scope.lateral?
92
+
93
+ scope.root?
89
94
  end
90
95
 
91
96
  def validation_exception(attr_name, message)
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Grape
4
- # Registry to store and locate known Validators.
5
4
  module Validations
6
5
  module_function
7
6
 
@@ -12,7 +11,7 @@ module Grape
12
11
  # Register a new validator, so it can be used to validate parameters.
13
12
  # @param short_name [String] all lower-case, no spaces
14
13
  # @param klass [Class] the validator class. Should inherit from
15
- # Validations::Base.
14
+ # Grape::Validations::Validators::Base.
16
15
  def register_validator(short_name, klass)
17
16
  validators[short_name] = klass
18
17
  end
@@ -21,14 +20,11 @@ module Grape
21
20
  validators.delete(short_name)
22
21
  end
23
22
 
24
- # Find a validator and if not found will try to load it
25
23
  def require_validator(short_name)
26
24
  str_name = short_name.to_s
27
- validators.fetch(str_name) do
28
- Grape::Validations::Validators.const_get("#{str_name.camelize}Validator")
29
- end
25
+ validators.fetch(str_name) { Grape::Validations::Validators.const_get(:"#{str_name.camelize}Validator") }
30
26
  rescue NameError
31
- raise Grape::Exceptions::UnknownValidator.new(short_name)
27
+ raise Grape::Exceptions::UnknownValidator, short_name
32
28
  end
33
29
  end
34
30
  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 = '1.8.0'
5
+ VERSION = '2.1.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,14 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'logger'
4
- require 'rack'
5
- require 'rack/builder'
6
- require 'rack/accept'
7
- require 'rack/auth/basic'
8
- require 'rack/auth/digest/md5'
9
- require 'set'
10
- require 'bigdecimal'
11
- require 'date'
12
3
  require 'active_support'
13
4
  require 'active_support/concern'
14
5
  require 'active_support/configurable'
@@ -17,6 +8,7 @@ require 'active_support/isolated_execution_state' if ActiveSupport::VERSION::MAJ
17
8
  require 'active_support/core_ext/array/conversions'
18
9
  require 'active_support/core_ext/array/extract_options'
19
10
  require 'active_support/core_ext/array/wrap'
11
+ require 'active_support/core_ext/enumerable'
20
12
  require 'active_support/core_ext/hash/conversions'
21
13
  require 'active_support/core_ext/hash/deep_merge'
22
14
  require 'active_support/core_ext/hash/except'
@@ -24,270 +16,50 @@ require 'active_support/core_ext/hash/indifferent_access'
24
16
  require 'active_support/core_ext/hash/keys'
25
17
  require 'active_support/core_ext/hash/reverse_merge'
26
18
  require 'active_support/core_ext/hash/slice'
19
+ require 'active_support/core_ext/module/delegation'
27
20
  require 'active_support/core_ext/object/blank'
21
+ require 'active_support/core_ext/object/deep_dup'
28
22
  require 'active_support/core_ext/object/duplicable'
29
- require 'active_support/dependencies/autoload'
23
+ require 'active_support/core_ext/string/output_safety'
24
+ require 'active_support/core_ext/string/exclude'
30
25
  require 'active_support/deprecation'
31
26
  require 'active_support/inflector'
27
+ require 'active_support/ordered_options'
32
28
  require 'active_support/notifications'
33
- require 'i18n'
29
+
30
+ require 'English'
31
+ require 'bigdecimal'
32
+ require 'date'
33
+ require 'dry-types'
34
+ require 'forwardable'
35
+ require 'json'
36
+ require 'logger'
37
+ require 'mustermann/grape'
38
+ require 'pathname'
39
+ require 'rack'
40
+ require 'rack/auth/basic'
41
+ require 'rack/builder'
42
+ require 'rack/head'
43
+ require 'set'
44
+ require 'singleton'
45
+ require 'zeitwerk'
46
+
47
+ loader = Zeitwerk::Loader.for_gem
48
+ loader.inflector.inflect(
49
+ 'api' => 'API',
50
+ 'dsl' => 'DSL'
51
+ )
52
+ railtie = "#{__dir__}/grape/railtie.rb"
53
+ loader.do_not_eager_load(railtie)
54
+ loader.setup
34
55
 
35
56
  I18n.load_path << File.expand_path('grape/locale/en.yml', __dir__)
36
57
 
37
58
  module Grape
38
59
  include ActiveSupport::Configurable
39
- extend ::ActiveSupport::Autoload
40
-
41
- eager_autoload do
42
- autoload :API
43
- autoload :Endpoint
44
-
45
- autoload :Namespace
46
-
47
- autoload :Path
48
- autoload :Cookies
49
- autoload :Validations
50
- autoload :ErrorFormatter
51
- autoload :Formatter
52
- autoload :Parser
53
- autoload :Request
54
- autoload :Env, 'grape/util/env'
55
- autoload :Json, 'grape/util/json'
56
- autoload :Xml, 'grape/util/xml'
57
- autoload :DryTypes
58
- end
59
-
60
- module Http
61
- extend ::ActiveSupport::Autoload
62
- eager_autoload do
63
- autoload :Headers
64
- end
65
- end
66
-
67
- module Exceptions
68
- extend ::ActiveSupport::Autoload
69
- eager_autoload do
70
- autoload :Base
71
- autoload :Validation
72
- autoload :ValidationArrayErrors
73
- autoload :ValidationErrors
74
- autoload :MissingVendorOption
75
- autoload :MissingMimeType
76
- autoload :MissingOption
77
- autoload :InvalidFormatter
78
- autoload :InvalidVersionerOption
79
- autoload :UnknownValidator
80
- autoload :UnknownOptions
81
- autoload :UnknownParameter
82
- autoload :InvalidWithOptionForRepresent
83
- autoload :IncompatibleOptionValues
84
- autoload :MissingGroupType
85
- autoload :UnsupportedGroupType
86
- autoload :InvalidMessageBody
87
- autoload :InvalidAcceptHeader
88
- autoload :InvalidVersionHeader
89
- autoload :MethodNotAllowed
90
- autoload :InvalidResponse
91
- autoload :EmptyMessageBody
92
- autoload :TooManyMultipartFiles
93
- autoload :MissingGroupTypeError, 'grape/exceptions/missing_group_type'
94
- autoload :UnsupportedGroupTypeError, 'grape/exceptions/unsupported_group_type'
95
- end
96
- end
97
-
98
- module Extensions
99
- extend ::ActiveSupport::Autoload
100
- eager_autoload do
101
- autoload :Hash
102
- end
103
- module ActiveSupport
104
- extend ::ActiveSupport::Autoload
105
- eager_autoload do
106
- autoload :HashWithIndifferentAccess
107
- end
108
- end
109
-
110
- module Hashie
111
- extend ::ActiveSupport::Autoload
112
- eager_autoload do
113
- autoload :Mash
114
- end
115
- end
116
- end
117
-
118
- module Middleware
119
- extend ::ActiveSupport::Autoload
120
- eager_autoload do
121
- autoload :Base
122
- autoload :Versioner
123
- autoload :Formatter
124
- autoload :Error
125
- autoload :Globals
126
- autoload :Stack
127
- autoload :Helpers
128
- end
129
-
130
- module Auth
131
- extend ::ActiveSupport::Autoload
132
- eager_autoload do
133
- autoload :Base
134
- autoload :DSL
135
- autoload :StrategyInfo
136
- autoload :Strategies
137
- end
138
- end
139
60
 
140
- module Versioner
141
- extend ::ActiveSupport::Autoload
142
- eager_autoload do
143
- autoload :Path
144
- autoload :Header
145
- autoload :Param
146
- autoload :AcceptVersionHeader
147
- end
148
- end
149
- end
150
-
151
- module Util
152
- extend ::ActiveSupport::Autoload
153
- eager_autoload do
154
- autoload :InheritableValues
155
- autoload :StackableValues
156
- autoload :ReverseStackableValues
157
- autoload :InheritableSetting
158
- autoload :StrictHashConfiguration
159
- autoload :Registrable
160
- end
161
- end
162
-
163
- module ErrorFormatter
164
- extend ::ActiveSupport::Autoload
165
- eager_autoload do
166
- autoload :Base
167
- autoload :Json
168
- autoload :Txt
169
- autoload :Xml
170
- end
171
- end
172
-
173
- module Formatter
174
- extend ::ActiveSupport::Autoload
175
- eager_autoload do
176
- autoload :Json
177
- autoload :SerializableHash
178
- autoload :Txt
179
- autoload :Xml
180
- end
181
- end
182
-
183
- module Parser
184
- extend ::ActiveSupport::Autoload
185
- eager_autoload do
186
- autoload :Json
187
- autoload :Xml
188
- end
189
- end
190
-
191
- module DSL
192
- extend ::ActiveSupport::Autoload
193
- eager_autoload do
194
- autoload :API
195
- autoload :Callbacks
196
- autoload :Settings
197
- autoload :Configuration
198
- autoload :InsideRoute
199
- autoload :Helpers
200
- autoload :Middleware
201
- autoload :Parameters
202
- autoload :RequestResponse
203
- autoload :Routing
204
- autoload :Validations
205
- autoload :Logger
206
- autoload :Desc
207
- end
208
- end
209
-
210
- class API
211
- extend ::ActiveSupport::Autoload
212
- eager_autoload do
213
- autoload :Helpers
214
- end
215
- end
216
-
217
- module Presenters
218
- extend ::ActiveSupport::Autoload
219
- eager_autoload do
220
- autoload :Presenter
221
- end
222
- end
223
-
224
- module ServeStream
225
- extend ::ActiveSupport::Autoload
226
- eager_autoload do
227
- autoload :FileBody
228
- autoload :SendfileResponse
229
- autoload :StreamResponse
230
- end
231
- end
232
-
233
- module Validations
234
- extend ::ActiveSupport::Autoload
235
-
236
- eager_autoload do
237
- autoload :AttributesIterator
238
- autoload :MultipleAttributesIterator
239
- autoload :SingleAttributeIterator
240
- autoload :Types
241
- autoload :ParamsScope
242
- autoload :ValidatorFactory
243
- autoload :Base, 'grape/validations/validators/base'
244
- end
245
-
246
- module Types
247
- extend ::ActiveSupport::Autoload
248
-
249
- eager_autoload do
250
- autoload :InvalidValue
251
- autoload :DryTypeCoercer
252
- autoload :ArrayCoercer
253
- autoload :SetCoercer
254
- autoload :PrimitiveCoercer
255
- autoload :CustomTypeCoercer
256
- autoload :CustomTypeCollectionCoercer
257
- autoload :MultipleTypeCoercer
258
- autoload :VariantCollectionCoercer
259
- end
260
- end
261
-
262
- module Validators
263
- extend ::ActiveSupport::Autoload
264
-
265
- eager_autoload do
266
- autoload :Base
267
- autoload :MultipleParamsBase
268
- autoload :AllOrNoneOfValidator
269
- autoload :AllowBlankValidator
270
- autoload :AsValidator
271
- autoload :AtLeastOneOfValidator
272
- autoload :CoerceValidator
273
- autoload :DefaultValidator
274
- autoload :ExactlyOneOfValidator
275
- autoload :ExceptValuesValidator
276
- autoload :MutualExclusionValidator
277
- autoload :PresenceValidator
278
- autoload :RegexpValidator
279
- autoload :SameAsValidator
280
- autoload :ValuesValidator
281
- end
282
- end
283
- end
284
-
285
- module Types
286
- extend ::ActiveSupport::Autoload
287
-
288
- eager_autoload do
289
- autoload :InvalidValue
290
- end
61
+ def self.deprecator
62
+ @deprecator ||= ActiveSupport::Deprecation.new('2.0', 'Grape')
291
63
  end
292
64
 
293
65
  configure do |config|
@@ -296,10 +68,7 @@ module Grape
296
68
  end
297
69
  end
298
70
 
299
- require 'grape/content_types'
300
-
301
- require 'grape/util/lazy_value'
302
- require 'grape/util/lazy_block'
303
- require 'grape/util/endpoint_configuration'
304
-
305
- require 'grape/version'
71
+ # https://api.rubyonrails.org/classes/ActiveSupport/Deprecation.html
72
+ # adding Grape.deprecator to Rails App if any
73
+ require 'grape/railtie' if defined?(Rails::Railtie) && ActiveSupport.gem_version >= Gem::Version.new('7.1')
74
+ loader.eager_load