grape-active_model_serializers 1.2.1 → 1.3.1
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +0 -4
- data/README.md +17 -3
- data/grape-active_model_serializers.gemspec +2 -3
- data/lib/.travis.yml +3 -1
- data/lib/grape-active_model_serializers/formatter.rb +2 -6
- data/lib/grape-active_model_serializers/version.rb +1 -1
- data/spec/features/grape-active_model_serializers/render_spec.rb +0 -3
- data/spec/grape-active_model_serializers/endpoint_extension_spec.rb +7 -7
- data/spec/grape-active_model_serializers/formatter_spec.rb +29 -0
- data/spec/spec_helper.rb +1 -2
- metadata +20 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d1fc34293532a51eb2a8694d46c26d874b56d3c
|
4
|
+
data.tar.gz: dd6d159497a55ee86f431402f02e0991cfae55c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1012cd5e379a6dd9b988cb23d02d84bc12e6c95a4a2b61390762f7f8bccab6cf4c55254bee506bb8d59a8ca82ab581e30c411a2bfdf09a6e78c979660007c06a
|
7
|
+
data.tar.gz: 4b9d9dbbd00137e3ed063ccc357efd36aeaabe6a446c2960022c951417cd2abf0b2bd1b175283da38af0bc67f568792b2e589edbbb5b999ff7898fd6282fe5c6
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -82,18 +82,18 @@ end
|
|
82
82
|
|
83
83
|
```ruby
|
84
84
|
# Serializer options can be specified on routes or namespaces.
|
85
|
-
namespace 'foo', :serializer =>
|
85
|
+
namespace 'foo', :serializer => BarSerializer do
|
86
86
|
get "/" do
|
87
87
|
# will use "bar" serializer
|
88
88
|
end
|
89
89
|
|
90
90
|
# Options specified on a route or namespace override those of the containing namespace.
|
91
|
-
get "/home", :serializer =>
|
91
|
+
get "/home", :serializer => HomeSerializer do
|
92
92
|
# will use "home" serializer
|
93
93
|
end
|
94
94
|
|
95
95
|
# All standard options for `ActiveModel::Serializers` are supported.
|
96
|
-
get "/fancy_homes", :root => 'world', :each_serializer =>
|
96
|
+
get "/fancy_homes", :root => 'world', :each_serializer => FancyHomesSerializer
|
97
97
|
...
|
98
98
|
end
|
99
99
|
end
|
@@ -109,6 +109,16 @@ get "/homes"
|
|
109
109
|
end
|
110
110
|
```
|
111
111
|
|
112
|
+
### Support for `default_serializer_options`
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
helper do
|
116
|
+
def default_serializer_options
|
117
|
+
{only: params[:only], except: params[:except]}
|
118
|
+
end
|
119
|
+
end
|
120
|
+
```
|
121
|
+
|
112
122
|
### current_user
|
113
123
|
|
114
124
|
One of the nice features of ActiveModel::Serializers is that it
|
@@ -170,6 +180,10 @@ Enjoy :)
|
|
170
180
|
|
171
181
|
## Changelog
|
172
182
|
|
183
|
+
#### v1.2.1
|
184
|
+
* Adds support for active model serializer 0.9.x
|
185
|
+
|
186
|
+
|
173
187
|
#### v1.0.0
|
174
188
|
* Released on rubygems.org
|
175
189
|
* *BREAKING* Changes behaviour of root keys when serialising arrays. See [Array roots](https://github.com/jrhe/grape-active_model_serializers#array-roots)
|
@@ -17,11 +17,10 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.licenses = ['MIT']
|
18
18
|
|
19
19
|
gem.add_dependency "grape", "~> 0.3"
|
20
|
-
gem.add_dependency "active_model_serializers", ">= 0.9.0
|
20
|
+
gem.add_dependency "active_model_serializers", ">= 0.9.0"
|
21
21
|
|
22
22
|
gem.add_development_dependency "rspec"
|
23
23
|
gem.add_development_dependency "rack-test"
|
24
24
|
gem.add_development_dependency "rake"
|
25
|
-
gem.add_development_dependency "
|
26
|
-
gem.add_development_dependency 'guard-rspec'
|
25
|
+
gem.add_development_dependency "guard-rspec"
|
27
26
|
end
|
data/lib/.travis.yml
CHANGED
@@ -17,7 +17,7 @@ module Grape
|
|
17
17
|
options = build_options_from_endpoint(endpoint)
|
18
18
|
|
19
19
|
if serializer = options.fetch(:serializer, ActiveModel::Serializer.serializer_for(resource))
|
20
|
-
options[:scope] =
|
20
|
+
options[:scope] = endpoint unless options.has_key?(:scope)
|
21
21
|
# ensure we have an root to fallback on
|
22
22
|
options[:resource_name] = default_root(endpoint) if resource.respond_to?(:to_ary)
|
23
23
|
serializer.new(resource, options.merge(other_options))
|
@@ -56,7 +56,7 @@ module Grape
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def build_options_from_endpoint(endpoint)
|
59
|
-
endpoint.namespace_options
|
59
|
+
[endpoint.default_serializer_options || {}, endpoint.namespace_options, endpoint.route_options].reduce(:merge)
|
60
60
|
end
|
61
61
|
|
62
62
|
# array root is the innermost namespace name ('space') if there is one,
|
@@ -70,10 +70,6 @@ module Grape
|
|
70
70
|
endpoint.options[:path][0].to_s.split('/')[-1]
|
71
71
|
end
|
72
72
|
end
|
73
|
-
|
74
|
-
def serialization_scope
|
75
|
-
:current_user
|
76
|
-
end
|
77
73
|
end
|
78
74
|
end
|
79
75
|
end
|
@@ -2,17 +2,17 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'Grape::EndpointExtension' do
|
4
4
|
|
5
|
-
subject { Grape::Endpoint.new(
|
5
|
+
subject { Grape::Endpoint.new({}, {path: '/', method: 'foo'}) }
|
6
6
|
|
7
7
|
let(:serializer) { Grape::Formatter::ActiveModelSerializers }
|
8
8
|
|
9
9
|
let(:user) do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
Object.new do
|
11
|
+
def name
|
12
|
+
'sven'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
16
|
|
17
17
|
let(:users) { [user, user] }
|
18
18
|
|
@@ -31,4 +31,33 @@ describe Grape::Formatter::ActiveModelSerializers do
|
|
31
31
|
expect(subject.meta_key).to eq({ meta_key: :custom_key_name })
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
describe '.fetch_serializer' do
|
36
|
+
let(:user) { User.new(first_name: 'John') }
|
37
|
+
let(:endpoint) { Grape::Endpoint.new({}, {path: '/', method: 'foo'}) }
|
38
|
+
let(:env) { { 'api.endpoint' => endpoint } }
|
39
|
+
|
40
|
+
before do
|
41
|
+
def endpoint.current_user
|
42
|
+
@current_user ||= User.new(first_name: 'Current user')
|
43
|
+
end
|
44
|
+
|
45
|
+
def endpoint.default_serializer_options
|
46
|
+
{ only: :only, except: :except }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
subject { described_class.fetch_serializer(user, env) }
|
51
|
+
|
52
|
+
it { should be_a UserSerializer }
|
53
|
+
|
54
|
+
it 'should have correct scope set' do
|
55
|
+
expect(subject.scope.current_user).to eq(endpoint.current_user)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should read default serializer options' do
|
59
|
+
expect(subject.instance_variable_get('@only')).to eq([:only])
|
60
|
+
expect(subject.instance_variable_get('@except')).to eq([:except])
|
61
|
+
end
|
62
|
+
end
|
34
63
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,8 +9,7 @@ require 'active_support/core_ext/hash/conversions'
|
|
9
9
|
require "active_support/json"
|
10
10
|
require 'rspec'
|
11
11
|
require 'rack/test'
|
12
|
-
|
13
|
-
require 'jazz_hands'
|
12
|
+
require 'grape-active_model_serializers'
|
14
13
|
|
15
14
|
RSpec.configure do |config|
|
16
15
|
config.include Rack::Test::Methods
|
metadata
CHANGED
@@ -1,111 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grape-active_model_serializers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Richard Henry Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grape
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: active_model_serializers
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.9.0
|
33
|
+
version: 0.9.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.9.0
|
40
|
+
version: 0.9.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rack-test
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: jazz_hands
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
80
|
+
- - '>='
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: guard-rspec
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- -
|
87
|
+
- - '>='
|
102
88
|
- !ruby/object:Gem::Version
|
103
89
|
version: '0'
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- -
|
94
|
+
- - '>='
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
111
97
|
description: Provides a Formatter for the Grape API DSL to emit objects serialized
|
@@ -116,7 +102,7 @@ executables: []
|
|
116
102
|
extensions: []
|
117
103
|
extra_rdoc_files: []
|
118
104
|
files:
|
119
|
-
-
|
105
|
+
- .gitignore
|
120
106
|
- Gemfile
|
121
107
|
- Guardfile
|
122
108
|
- LICENSE.txt
|
@@ -149,17 +135,17 @@ require_paths:
|
|
149
135
|
- lib
|
150
136
|
required_ruby_version: !ruby/object:Gem::Requirement
|
151
137
|
requirements:
|
152
|
-
- -
|
138
|
+
- - '>='
|
153
139
|
- !ruby/object:Gem::Version
|
154
140
|
version: '0'
|
155
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
|
-
- -
|
143
|
+
- - '>='
|
158
144
|
- !ruby/object:Gem::Version
|
159
145
|
version: '0'
|
160
146
|
requirements: []
|
161
147
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.
|
148
|
+
rubygems_version: 2.0.14
|
163
149
|
signing_key:
|
164
150
|
specification_version: 4
|
165
151
|
summary: Use active_model_serializer in grape
|
@@ -174,4 +160,3 @@ test_files:
|
|
174
160
|
- spec/support/models/user.rb
|
175
161
|
- spec/support/serializers/blog_post_serializer.rb
|
176
162
|
- spec/support/serializers/user_serializer.rb
|
177
|
-
has_rdoc:
|