grape 0.12.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grape might be problematic. Click here for more details.

Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +9 -4
  3. data/CHANGELOG.md +265 -215
  4. data/CONTRIBUTING.md +4 -4
  5. data/Gemfile +0 -1
  6. data/Gemfile.lock +166 -0
  7. data/README.md +426 -161
  8. data/RELEASING.md +14 -6
  9. data/Rakefile +30 -33
  10. data/UPGRADING.md +54 -23
  11. data/benchmark/simple.rb +27 -0
  12. data/gemfiles/rack_1.5.2.gemfile +13 -0
  13. data/gemfiles/rails_3.gemfile +2 -2
  14. data/gemfiles/rails_4.gemfile +1 -2
  15. data/grape.gemspec +6 -7
  16. data/lib/grape/api.rb +24 -4
  17. data/lib/grape/dsl/callbacks.rb +20 -0
  18. data/lib/grape/dsl/configuration.rb +59 -2
  19. data/lib/grape/dsl/helpers.rb +8 -3
  20. data/lib/grape/dsl/inside_route.rb +100 -45
  21. data/lib/grape/dsl/parameters.rb +96 -7
  22. data/lib/grape/dsl/request_response.rb +1 -1
  23. data/lib/grape/dsl/routing.rb +17 -4
  24. data/lib/grape/dsl/settings.rb +36 -1
  25. data/lib/grape/dsl/validations.rb +7 -5
  26. data/lib/grape/endpoint.rb +102 -57
  27. data/lib/grape/error_formatter/base.rb +6 -6
  28. data/lib/grape/exceptions/base.rb +5 -5
  29. data/lib/grape/exceptions/invalid_version_header.rb +10 -0
  30. data/lib/grape/exceptions/unknown_parameter.rb +10 -0
  31. data/lib/grape/exceptions/validation_errors.rb +4 -3
  32. data/lib/grape/formatter/serializable_hash.rb +3 -2
  33. data/lib/grape/http/headers.rb +0 -1
  34. data/lib/grape/locale/en.yml +5 -1
  35. data/lib/grape/middleware/auth/base.rb +2 -2
  36. data/lib/grape/middleware/auth/dsl.rb +1 -1
  37. data/lib/grape/middleware/auth/strategies.rb +1 -1
  38. data/lib/grape/middleware/base.rb +8 -4
  39. data/lib/grape/middleware/error.rb +3 -2
  40. data/lib/grape/middleware/filter.rb +1 -1
  41. data/lib/grape/middleware/formatter.rb +64 -45
  42. data/lib/grape/middleware/globals.rb +3 -3
  43. data/lib/grape/middleware/versioner/accept_version_header.rb +5 -7
  44. data/lib/grape/middleware/versioner/header.rb +113 -50
  45. data/lib/grape/middleware/versioner/param.rb +5 -8
  46. data/lib/grape/middleware/versioner/parse_media_type_patch.rb +20 -0
  47. data/lib/grape/middleware/versioner/path.rb +3 -6
  48. data/lib/grape/namespace.rb +13 -2
  49. data/lib/grape/path.rb +4 -3
  50. data/lib/grape/request.rb +40 -0
  51. data/lib/grape/route.rb +5 -0
  52. data/lib/grape/util/content_types.rb +9 -9
  53. data/lib/grape/util/env.rb +22 -0
  54. data/lib/grape/util/file_response.rb +21 -0
  55. data/lib/grape/util/inheritable_setting.rb +23 -2
  56. data/lib/grape/util/inheritable_values.rb +1 -1
  57. data/lib/grape/util/stackable_values.rb +5 -2
  58. data/lib/grape/util/strict_hash_configuration.rb +2 -1
  59. data/lib/grape/validations/attributes_iterator.rb +8 -3
  60. data/lib/grape/validations/params_scope.rb +164 -22
  61. data/lib/grape/validations/types/build_coercer.rb +53 -0
  62. data/lib/grape/validations/types/custom_type_coercer.rb +183 -0
  63. data/lib/grape/validations/types/file.rb +28 -0
  64. data/lib/grape/validations/types/json.rb +65 -0
  65. data/lib/grape/validations/types/multiple_type_coercer.rb +76 -0
  66. data/lib/grape/validations/types/variant_collection_coercer.rb +59 -0
  67. data/lib/grape/validations/types/virtus_collection_patch.rb +16 -0
  68. data/lib/grape/validations/types.rb +144 -0
  69. data/lib/grape/validations/validators/all_or_none.rb +1 -1
  70. data/lib/grape/validations/validators/allow_blank.rb +3 -3
  71. data/lib/grape/validations/validators/base.rb +7 -0
  72. data/lib/grape/validations/validators/coerce.rb +32 -34
  73. data/lib/grape/validations/validators/presence.rb +2 -3
  74. data/lib/grape/validations/validators/regexp.rb +2 -4
  75. data/lib/grape/validations/validators/values.rb +3 -3
  76. data/lib/grape/validations.rb +5 -0
  77. data/lib/grape/version.rb +2 -1
  78. data/lib/grape.rb +15 -12
  79. data/pkg/grape-0.13.0.gem +0 -0
  80. data/spec/grape/api/custom_validations_spec.rb +5 -4
  81. data/spec/grape/api/deeply_included_options_spec.rb +7 -7
  82. data/spec/grape/api/nested_helpers_spec.rb +4 -2
  83. data/spec/grape/api/shared_helpers_spec.rb +8 -8
  84. data/spec/grape/api_spec.rb +151 -54
  85. data/spec/grape/dsl/configuration_spec.rb +13 -0
  86. data/spec/grape/dsl/helpers_spec.rb +16 -2
  87. data/spec/grape/dsl/inside_route_spec.rb +40 -4
  88. data/spec/grape/dsl/parameters_spec.rb +0 -6
  89. data/spec/grape/dsl/routing_spec.rb +1 -1
  90. data/spec/grape/dsl/validations_spec.rb +18 -0
  91. data/spec/grape/endpoint_spec.rb +130 -6
  92. data/spec/grape/entity_spec.rb +10 -8
  93. data/spec/grape/exceptions/invalid_accept_header_spec.rb +1 -15
  94. data/spec/grape/exceptions/validation_errors_spec.rb +28 -0
  95. data/spec/grape/integration/rack_spec.rb +3 -2
  96. data/spec/grape/middleware/base_spec.rb +40 -16
  97. data/spec/grape/middleware/error_spec.rb +16 -15
  98. data/spec/grape/middleware/exception_spec.rb +45 -43
  99. data/spec/grape/middleware/formatter_spec.rb +34 -5
  100. data/spec/grape/middleware/versioner/header_spec.rb +79 -47
  101. data/spec/grape/path_spec.rb +10 -10
  102. data/spec/grape/presenters/presenter_spec.rb +2 -2
  103. data/spec/grape/request_spec.rb +100 -0
  104. data/spec/grape/util/inheritable_values_spec.rb +14 -0
  105. data/spec/grape/util/stackable_values_spec.rb +10 -0
  106. data/spec/grape/validations/params_scope_spec.rb +86 -0
  107. data/spec/grape/validations/types_spec.rb +95 -0
  108. data/spec/grape/validations/validators/coerce_spec.rb +364 -10
  109. data/spec/grape/validations/validators/values_spec.rb +27 -15
  110. data/spec/grape/validations_spec.rb +53 -24
  111. data/spec/shared/versioning_examples.rb +2 -2
  112. data/spec/spec_helper.rb +0 -1
  113. data/spec/support/versioned_helpers.rb +2 -2
  114. metadata +55 -14
  115. data/.gitignore +0 -46
  116. data/.rspec +0 -2
  117. data/.rubocop.yml +0 -7
  118. data/.rubocop_todo.yml +0 -84
  119. data/.travis.yml +0 -20
  120. data/.yardopts +0 -2
  121. data/lib/backports/active_support/deep_dup.rb +0 -49
  122. data/lib/backports/active_support/duplicable.rb +0 -88
  123. data/lib/grape/http/request.rb +0 -27
data/CONTRIBUTING.md CHANGED
@@ -1,16 +1,16 @@
1
1
  Contributing to Grape
2
2
  =====================
3
3
 
4
- Grape is work of [hundreds of contributors](https://github.com/intridea/grape/graphs/contributors). You're encouraged to submit [pull requests](https://github.com/intridea/grape/pulls), [propose features and discuss issues](https://github.com/intridea/grape/issues). When in doubt, ask a question in the [Grape Google Group](http://groups.google.com/group/ruby-grape).
4
+ Grape is work of [hundreds of contributors](https://github.com/ruby-grape/grape/graphs/contributors). You're encouraged to submit [pull requests](https://github.com/ruby-grape/grape/pulls), [propose features and discuss issues](https://github.com/ruby-grape/grape/issues). When in doubt, ask a question in the [Grape Google Group](http://groups.google.com/group/ruby-grape).
5
5
 
6
6
  #### Fork the Project
7
7
 
8
- Fork the [project on Github](https://github.com/intridea/grape) and check out your copy.
8
+ Fork the [project on Github](https://github.com/ruby-grape/grape) and check out your copy.
9
9
 
10
10
  ```
11
11
  git clone https://github.com/contributor/grape.git
12
12
  cd grape
13
- git remote add upstream https://github.com/intridea/grape.git
13
+ git remote add upstream https://github.com/ruby-grape/grape.git
14
14
  ```
15
15
 
16
16
  #### Create a Topic Branch
@@ -102,7 +102,7 @@ git push origin my-feature-branch -f
102
102
  Update the [CHANGELOG](CHANGELOG.md) with the pull request number. A typical entry looks as follows.
103
103
 
104
104
  ```
105
- * [#123](https://github.com/intridea/grape/pull/123): Reticulated splines - [@contributor](https://github.com/contributor).
105
+ * [#123](https://github.com/ruby-grape/grape/pull/123): Reticulated splines - [@contributor](https://github.com/contributor).
106
106
  ```
107
107
 
108
108
  Amend your previous commit and force push the changes.
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :development, :test do
6
- gem 'rubocop', '~> 0.31.0'
7
6
  gem 'guard'
8
7
  gem 'guard-rspec'
9
8
  gem 'guard-rubocop'
data/Gemfile.lock ADDED
@@ -0,0 +1,166 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ grape (0.14.0)
5
+ activesupport
6
+ builder
7
+ hashie (>= 2.1.0)
8
+ multi_json (>= 1.3.2)
9
+ multi_xml (>= 0.5.2)
10
+ rack (>= 1.3.0)
11
+ rack-accept
12
+ rack-mount
13
+ virtus (>= 1.0.0)
14
+
15
+ GEM
16
+ remote: https://rubygems.org/
17
+ specs:
18
+ activesupport (4.2.5)
19
+ i18n (~> 0.7)
20
+ json (~> 1.7, >= 1.7.7)
21
+ minitest (~> 5.1)
22
+ thread_safe (~> 0.3, >= 0.3.4)
23
+ tzinfo (~> 1.1)
24
+ appraisal (2.1.0)
25
+ bundler
26
+ rake
27
+ thor (>= 0.14.0)
28
+ ast (2.1.0)
29
+ astrolabe (1.3.1)
30
+ parser (~> 2.2)
31
+ axiom-types (0.1.1)
32
+ descendants_tracker (~> 0.0.4)
33
+ ice_nine (~> 0.11.0)
34
+ thread_safe (~> 0.3, >= 0.3.1)
35
+ benchmark-ips (2.3.0)
36
+ builder (3.2.2)
37
+ coderay (1.1.0)
38
+ coercible (1.0.0)
39
+ descendants_tracker (~> 0.0.1)
40
+ cookiejar (0.3.2)
41
+ descendants_tracker (0.0.4)
42
+ thread_safe (~> 0.3, >= 0.3.1)
43
+ diff-lcs (1.2.5)
44
+ equalizer (0.0.11)
45
+ ffi (1.9.10)
46
+ formatador (0.2.5)
47
+ git-version-bump (0.15.1)
48
+ grape-entity (0.4.8)
49
+ activesupport
50
+ multi_json (>= 1.3.2)
51
+ guard (2.13.0)
52
+ formatador (>= 0.2.4)
53
+ listen (>= 2.7, <= 4.0)
54
+ lumberjack (~> 1.0)
55
+ nenv (~> 0.1)
56
+ notiffany (~> 0.0)
57
+ pry (>= 0.9.12)
58
+ shellany (~> 0.0)
59
+ thor (>= 0.18.1)
60
+ guard-compat (1.2.1)
61
+ guard-rspec (4.6.4)
62
+ guard (~> 2.1)
63
+ guard-compat (~> 1.1)
64
+ rspec (>= 2.99.0, < 4.0)
65
+ guard-rubocop (1.2.0)
66
+ guard (~> 2.0)
67
+ rubocop (~> 0.20)
68
+ hashie (3.4.3)
69
+ i18n (0.7.0)
70
+ ice_nine (0.11.1)
71
+ json (1.8.3)
72
+ listen (3.0.5)
73
+ rb-fsevent (>= 0.9.3)
74
+ rb-inotify (>= 0.9)
75
+ lumberjack (1.0.9)
76
+ maruku (0.7.2)
77
+ method_source (0.8.2)
78
+ mime-types (2.99)
79
+ minitest (5.8.3)
80
+ multi_json (1.11.2)
81
+ multi_xml (0.5.5)
82
+ nenv (0.2.0)
83
+ notiffany (0.0.8)
84
+ nenv (~> 0.1)
85
+ shellany (~> 0.0)
86
+ parser (2.2.3.0)
87
+ ast (>= 1.1, < 3.0)
88
+ powerpack (0.1.1)
89
+ pry (0.10.3)
90
+ coderay (~> 1.1.0)
91
+ method_source (~> 0.8.1)
92
+ slop (~> 3.4)
93
+ rack (1.6.4)
94
+ rack-accept (0.4.5)
95
+ rack (>= 0.4)
96
+ rack-contrib (1.4.0)
97
+ git-version-bump (~> 0.15)
98
+ rack (~> 1.4)
99
+ rack-mount (0.8.3)
100
+ rack (>= 1.0.0)
101
+ rack-test (0.6.3)
102
+ rack (>= 1.0)
103
+ rainbow (2.0.0)
104
+ rake (10.4.2)
105
+ rb-fsevent (0.9.6)
106
+ rb-inotify (0.9.5)
107
+ ffi (>= 0.5.0)
108
+ rspec (3.4.0)
109
+ rspec-core (~> 3.4.0)
110
+ rspec-expectations (~> 3.4.0)
111
+ rspec-mocks (~> 3.4.0)
112
+ rspec-core (3.4.1)
113
+ rspec-support (~> 3.4.0)
114
+ rspec-expectations (3.4.0)
115
+ diff-lcs (>= 1.2.0, < 2.0)
116
+ rspec-support (~> 3.4.0)
117
+ rspec-mocks (3.4.0)
118
+ diff-lcs (>= 1.2.0, < 2.0)
119
+ rspec-support (~> 3.4.0)
120
+ rspec-support (3.4.1)
121
+ rubocop (0.35.1)
122
+ astrolabe (~> 1.3)
123
+ parser (>= 2.2.3.0, < 3.0)
124
+ powerpack (~> 0.1)
125
+ rainbow (>= 1.99.1, < 3.0)
126
+ ruby-progressbar (~> 1.7)
127
+ tins (<= 1.6.0)
128
+ ruby-progressbar (1.7.5)
129
+ shellany (0.0.1)
130
+ slop (3.6.0)
131
+ thor (0.19.1)
132
+ thread_safe (0.3.5)
133
+ tins (1.6.0)
134
+ tzinfo (1.2.2)
135
+ thread_safe (~> 0.1)
136
+ virtus (1.0.5)
137
+ axiom-types (~> 0.1)
138
+ coercible (~> 1.0)
139
+ descendants_tracker (~> 0.0, >= 0.0.3)
140
+ equalizer (~> 0.0, >= 0.0.9)
141
+ yard (0.8.7.6)
142
+
143
+ PLATFORMS
144
+ ruby
145
+
146
+ DEPENDENCIES
147
+ appraisal
148
+ benchmark-ips
149
+ bundler
150
+ cookiejar
151
+ grape!
152
+ grape-entity (>= 0.4.4)
153
+ guard
154
+ guard-rspec
155
+ guard-rubocop
156
+ maruku
157
+ mime-types (< 3.0)
158
+ rack-contrib
159
+ rack-test
160
+ rake
161
+ rspec (~> 3.0)
162
+ rubocop (= 0.35.1)
163
+ yard
164
+
165
+ BUNDLED WITH
166
+ 1.10.6