grape 0.3.0 → 0.3.1
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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +1 -0
- data/CHANGELOG.md +5 -0
- data/README.md +3 -3
- data/Rakefile +4 -4
- data/lib/grape/api.rb +1 -1
- data/lib/grape/middleware/formatter.rb +12 -3
- data/lib/grape/version.rb +1 -1
- data/spec/grape/api_spec.rb +1 -0
- data/spec/grape/entity_spec.rb +33 -7
- metadata +36 -106
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 72606de0cb9865b1f2b38a60f10c235438fc2976
|
4
|
+
data.tar.gz: 313a37b54a0f42d95c1ad2f2272dc5fd8f00165d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: da5f6c376c6a9a80b99974a432805cc80c8562e7889a42e5d9e1c2075b460b7ad526dd0566b3cd92bf302b9407aaeda99d04681d39d4b1f61a117231d49e12f1
|
7
|
+
data.tar.gz: 71ad5651560cb226feaed879480cdd217eb78a274d66587a3f1f6ec4e160cf72ba3aec46c11041fa006f53ac49f30f15f7c3955973ec24b4df35c23156085951
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -12,8 +12,8 @@ content negotiation, versioning and much more.
|
|
12
12
|
|
13
13
|
## Stable Release
|
14
14
|
|
15
|
-
You're reading the documentation for the next release of Grape, which should be 0.3.
|
16
|
-
The current stable release is [0.
|
15
|
+
You're reading the documentation for the next release of Grape, which should be 0.3.1.
|
16
|
+
The current stable release is [0.3.0](https://github.com/intridea/grape/blob/v0.3.0/README.md).
|
17
17
|
|
18
18
|
## Project Tracking
|
19
19
|
|
@@ -1145,7 +1145,7 @@ features and discuss issues.
|
|
1145
1145
|
* Fork the project
|
1146
1146
|
* Write tests for your new feature or a test that reproduces a bug
|
1147
1147
|
* Implement your feature or make a bug fix
|
1148
|
-
* Add a line to `CHANGELOG.
|
1148
|
+
* Add a line to `CHANGELOG.md` describing your change
|
1149
1149
|
* Commit, push and make a pull request. Bonus points for topic branches.
|
1150
1150
|
|
1151
1151
|
## License
|
data/Rakefile
CHANGED
@@ -19,18 +19,18 @@ task :default => :spec
|
|
19
19
|
|
20
20
|
begin
|
21
21
|
require 'yard'
|
22
|
-
DOC_FILES = ['lib/**/*.rb', 'README.
|
23
|
-
|
22
|
+
DOC_FILES = ['lib/**/*.rb', 'README.md']
|
23
|
+
|
24
24
|
YARD::Rake::YardocTask.new(:doc) do |t|
|
25
25
|
t.files = DOC_FILES
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
namespace :doc do
|
29
29
|
YARD::Rake::YardocTask.new(:pages) do |t|
|
30
30
|
t.files = DOC_FILES
|
31
31
|
t.options = ['-o', '../grape.doc']
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
namespace :pages do
|
35
35
|
desc 'Generate and publish YARD docs to GitHub pages.'
|
36
36
|
task :publish => ['doc:pages'] do
|
data/lib/grape/api.rb
CHANGED
@@ -298,7 +298,7 @@ module Grape
|
|
298
298
|
def mount(mounts)
|
299
299
|
mounts = { mounts => '/' } unless mounts.respond_to?(:each_pair)
|
300
300
|
mounts.each_pair do |app, path|
|
301
|
-
if app.respond_to?(:inherit_settings)
|
301
|
+
if app.respond_to?(:inherit_settings, true)
|
302
302
|
app_settings = settings.clone
|
303
303
|
mount_path = Rack::Mount::Utils.normalize_path([ settings[:mount_path], path ].compact.join("/"))
|
304
304
|
app_settings.set :mount_path, mount_path
|
@@ -101,10 +101,19 @@ module Grape
|
|
101
101
|
|
102
102
|
def mime_array
|
103
103
|
accept = headers['accept'] or return []
|
104
|
+
accept_into_mime_and_quality = %r(
|
105
|
+
(
|
106
|
+
\w+/[\w+.-]+) # eg application/vnd.example.myformat+xml
|
107
|
+
(?:
|
108
|
+
(?:;[^,]*?)? # optionally multiple formats in a row
|
109
|
+
;\s*q=([\d.]+) # optional "quality" preference (eg q=0.5)
|
110
|
+
)?
|
111
|
+
)x # x = extended regular expression with comments etc
|
112
|
+
vendor_prefix_pattern = %r(vnd\.[^+]+\+)
|
104
113
|
|
105
|
-
accept.
|
106
|
-
|
107
|
-
|
114
|
+
accept.scan(accept_into_mime_and_quality).
|
115
|
+
sort_by { |_, quality_preference| -quality_preference.to_f }.
|
116
|
+
map {|mime, _| mime.sub(vendor_prefix_pattern, '') }
|
108
117
|
end
|
109
118
|
|
110
119
|
end
|
data/lib/grape/version.rb
CHANGED
data/spec/grape/api_spec.rb
CHANGED
data/spec/grape/entity_spec.rb
CHANGED
@@ -146,15 +146,15 @@ describe Grape::Entity do
|
|
146
146
|
|
147
147
|
end
|
148
148
|
|
149
|
-
it 'presents with xml' do
|
149
|
+
it 'presents with xml' do
|
150
150
|
entity = Class.new(Grape::Entity)
|
151
151
|
entity.root "examples", "example"
|
152
152
|
entity.expose :name
|
153
153
|
|
154
154
|
subject.format :xml
|
155
155
|
|
156
|
-
subject.get '/example' do
|
157
|
-
c = Class.new do
|
156
|
+
subject.get '/example' do
|
157
|
+
c = Class.new do
|
158
158
|
attr_reader :name
|
159
159
|
def initialize(args)
|
160
160
|
@name = args[:name] || "no name set"
|
@@ -175,15 +175,15 @@ describe Grape::Entity do
|
|
175
175
|
XML
|
176
176
|
end
|
177
177
|
|
178
|
-
it 'presents with json' do
|
178
|
+
it 'presents with json' do
|
179
179
|
entity = Class.new(Grape::Entity)
|
180
180
|
entity.root "examples", "example"
|
181
181
|
entity.expose :name
|
182
182
|
|
183
183
|
subject.format :json
|
184
184
|
|
185
|
-
subject.get '/example' do
|
186
|
-
c = Class.new do
|
185
|
+
subject.get '/example' do
|
186
|
+
c = Class.new do
|
187
187
|
attr_reader :name
|
188
188
|
def initialize(args)
|
189
189
|
@name = args[:name] || "no name set"
|
@@ -196,6 +196,32 @@ XML
|
|
196
196
|
last_response.headers['Content-type'].should == "application/json"
|
197
197
|
last_response.body.should == '{"example":{"name":"johnnyiller"}}'
|
198
198
|
end
|
199
|
+
|
200
|
+
it 'presents with jsonp and a custom formatter' do
|
201
|
+
entity = Class.new(Grape::Entity)
|
202
|
+
entity.root "examples", "example"
|
203
|
+
entity.expose :name
|
204
|
+
|
205
|
+
subject.content_type :jsonp, 'application/javascript'
|
206
|
+
subject.formatter :jsonp, lambda { |object, env| object.to_json }
|
207
|
+
subject.format :jsonp
|
208
|
+
|
209
|
+
subject.get '/example' do
|
210
|
+
c = Class.new do
|
211
|
+
attr_reader :name
|
212
|
+
def initialize(args)
|
213
|
+
@name = args[:name] || "no name set"
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
present c.new({:name => "johnnyiller"}), :with => entity
|
218
|
+
end
|
219
|
+
get '/example'
|
220
|
+
last_response.status.should == 200
|
221
|
+
last_response.headers['Content-type'].should == "application/javascript"
|
222
|
+
last_response.body.should == '{"example":{"name":"johnnyiller"}}'
|
223
|
+
end
|
224
|
+
|
199
225
|
end
|
200
226
|
|
201
|
-
end
|
227
|
+
end
|
metadata
CHANGED
@@ -1,116 +1,102 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grape
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Michael Bleigh
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
11
|
+
date: 2013-02-25 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rack
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rack-mount
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rack-accept
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: activesupport
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: multi_json
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: 1.3.2
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: 1.3.2
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: multi_xml
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: 0.5.2
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: 0.5.2
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: hashie
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - ~>
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -126,119 +111,104 @@ dependencies:
|
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: virtus
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - '>='
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: builder
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - '>='
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: '0'
|
150
132
|
type: :runtime
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: grape-entity
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
|
-
- -
|
143
|
+
- - '>='
|
164
144
|
- !ruby/object:Gem::Version
|
165
145
|
version: 0.2.0
|
166
146
|
type: :development
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
|
-
- -
|
150
|
+
- - '>='
|
172
151
|
- !ruby/object:Gem::Version
|
173
152
|
version: 0.2.0
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: rake
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
|
-
- -
|
157
|
+
- - '>='
|
180
158
|
- !ruby/object:Gem::Version
|
181
159
|
version: '0'
|
182
160
|
type: :development
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
|
-
- -
|
164
|
+
- - '>='
|
188
165
|
- !ruby/object:Gem::Version
|
189
166
|
version: '0'
|
190
167
|
- !ruby/object:Gem::Dependency
|
191
168
|
name: maruku
|
192
169
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
170
|
requirements:
|
195
|
-
- -
|
171
|
+
- - '>='
|
196
172
|
- !ruby/object:Gem::Version
|
197
173
|
version: '0'
|
198
174
|
type: :development
|
199
175
|
prerelease: false
|
200
176
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
177
|
requirements:
|
203
|
-
- -
|
178
|
+
- - '>='
|
204
179
|
- !ruby/object:Gem::Version
|
205
180
|
version: '0'
|
206
181
|
- !ruby/object:Gem::Dependency
|
207
182
|
name: yard
|
208
183
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
184
|
requirements:
|
211
|
-
- -
|
185
|
+
- - '>='
|
212
186
|
- !ruby/object:Gem::Version
|
213
187
|
version: '0'
|
214
188
|
type: :development
|
215
189
|
prerelease: false
|
216
190
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
191
|
requirements:
|
219
|
-
- -
|
192
|
+
- - '>='
|
220
193
|
- !ruby/object:Gem::Version
|
221
194
|
version: '0'
|
222
195
|
- !ruby/object:Gem::Dependency
|
223
196
|
name: rack-test
|
224
197
|
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
198
|
requirements:
|
227
|
-
- -
|
199
|
+
- - '>='
|
228
200
|
- !ruby/object:Gem::Version
|
229
201
|
version: '0'
|
230
202
|
type: :development
|
231
203
|
prerelease: false
|
232
204
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
205
|
requirements:
|
235
|
-
- -
|
206
|
+
- - '>='
|
236
207
|
- !ruby/object:Gem::Version
|
237
208
|
version: '0'
|
238
209
|
- !ruby/object:Gem::Dependency
|
239
210
|
name: rspec
|
240
211
|
requirement: !ruby/object:Gem::Requirement
|
241
|
-
none: false
|
242
212
|
requirements:
|
243
213
|
- - ~>
|
244
214
|
- !ruby/object:Gem::Version
|
@@ -246,7 +216,6 @@ dependencies:
|
|
246
216
|
type: :development
|
247
217
|
prerelease: false
|
248
218
|
version_requirements: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
219
|
requirements:
|
251
220
|
- - ~>
|
252
221
|
- !ruby/object:Gem::Version
|
@@ -254,17 +223,15 @@ dependencies:
|
|
254
223
|
- !ruby/object:Gem::Dependency
|
255
224
|
name: bundler
|
256
225
|
requirement: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
226
|
requirements:
|
259
|
-
- -
|
227
|
+
- - '>='
|
260
228
|
- !ruby/object:Gem::Version
|
261
229
|
version: '0'
|
262
230
|
type: :development
|
263
231
|
prerelease: false
|
264
232
|
version_requirements: !ruby/object:Gem::Requirement
|
265
|
-
none: false
|
266
233
|
requirements:
|
267
|
-
- -
|
234
|
+
- - '>='
|
268
235
|
- !ruby/object:Gem::Version
|
269
236
|
version: '0'
|
270
237
|
description: A Ruby framework for rapid API development with great conventions.
|
@@ -365,63 +332,26 @@ files:
|
|
365
332
|
homepage: https://github.com/intridea/grape
|
366
333
|
licenses:
|
367
334
|
- MIT
|
335
|
+
metadata: {}
|
368
336
|
post_install_message:
|
369
337
|
rdoc_options: []
|
370
338
|
require_paths:
|
371
339
|
- lib
|
372
340
|
required_ruby_version: !ruby/object:Gem::Requirement
|
373
|
-
none: false
|
374
341
|
requirements:
|
375
|
-
- -
|
342
|
+
- - '>='
|
376
343
|
- !ruby/object:Gem::Version
|
377
344
|
version: '0'
|
378
|
-
segments:
|
379
|
-
- 0
|
380
|
-
hash: 1796003249167814741
|
381
345
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
382
|
-
none: false
|
383
346
|
requirements:
|
384
|
-
- -
|
347
|
+
- - '>='
|
385
348
|
- !ruby/object:Gem::Version
|
386
349
|
version: '0'
|
387
|
-
segments:
|
388
|
-
- 0
|
389
|
-
hash: 1796003249167814741
|
390
350
|
requirements: []
|
391
351
|
rubyforge_project: grape
|
392
|
-
rubygems_version:
|
352
|
+
rubygems_version: 2.0.0
|
393
353
|
signing_key:
|
394
|
-
specification_version:
|
354
|
+
specification_version: 4
|
395
355
|
summary: A simple Ruby framework for building REST-like APIs.
|
396
|
-
test_files:
|
397
|
-
- spec/grape/api_spec.rb
|
398
|
-
- spec/grape/endpoint_spec.rb
|
399
|
-
- spec/grape/entity_spec.rb
|
400
|
-
- spec/grape/exceptions/invalid_formatter_spec.rb
|
401
|
-
- spec/grape/exceptions/invalid_versioner_option_spec.rb
|
402
|
-
- spec/grape/exceptions/missing_mime_type_spec.rb
|
403
|
-
- spec/grape/exceptions/missing_option_spec.rb
|
404
|
-
- spec/grape/exceptions/unknown_options_spec.rb
|
405
|
-
- spec/grape/exceptions/unknown_validator_spec.rb
|
406
|
-
- spec/grape/middleware/auth/basic_spec.rb
|
407
|
-
- spec/grape/middleware/auth/digest_spec.rb
|
408
|
-
- spec/grape/middleware/auth/oauth2_spec.rb
|
409
|
-
- spec/grape/middleware/base_spec.rb
|
410
|
-
- spec/grape/middleware/error_spec.rb
|
411
|
-
- spec/grape/middleware/exception_spec.rb
|
412
|
-
- spec/grape/middleware/formatter_spec.rb
|
413
|
-
- spec/grape/middleware/versioner/header_spec.rb
|
414
|
-
- spec/grape/middleware/versioner/param_spec.rb
|
415
|
-
- spec/grape/middleware/versioner/path_spec.rb
|
416
|
-
- spec/grape/middleware/versioner_spec.rb
|
417
|
-
- spec/grape/util/hash_stack_spec.rb
|
418
|
-
- spec/grape/validations/coerce_spec.rb
|
419
|
-
- spec/grape/validations/presence_spec.rb
|
420
|
-
- spec/grape/validations/regexp_spec.rb
|
421
|
-
- spec/grape/validations/zh-CN.yml
|
422
|
-
- spec/grape/validations_spec.rb
|
423
|
-
- spec/shared/versioning_examples.rb
|
424
|
-
- spec/spec_helper.rb
|
425
|
-
- spec/support/basic_auth_encode_helpers.rb
|
426
|
-
- spec/support/versioned_helpers.rb
|
356
|
+
test_files: []
|
427
357
|
has_rdoc:
|