adequate_serializer 0.1.0 → 0.1.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/.travis.yml +4 -0
- data/README.md +124 -6
- data/lib/adequate_serializer/base.rb +9 -1
- data/lib/adequate_serializer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa402c6b2f3c574115120ec0fecd0bf881f3ba8b
|
4
|
+
data.tar.gz: 4751584ac3ac456908d745fe16ab76c2a8d662e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4547364833383fb4a1f88e18c4753e7fb9acdf9ebf56e7d9a75936b940f6538e728101a374dc7ca0dca1160a88e6e0bf09209ec81153e4819779591ee0a10536
|
7
|
+
data.tar.gz: f2651a12bafe90ef26f70feb711497c4e95738ae21c6af9119dd444345ea3db20789a1ac39f2146d0eb8874c7798570bfb7f768b7cc737899a7d7cc0bdc5b7be
|
data/.travis.yml
CHANGED
@@ -2,3 +2,7 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- 2.2.2
|
4
4
|
before_install: gem install bundler -v 1.10.5
|
5
|
+
notifications:
|
6
|
+
email: false
|
7
|
+
slack:
|
8
|
+
secure: pms4y+KAAznnss/WF3cl7Nsm9gTNe4gTGQYjqcCC7Ygd9Ecuh1W76g2ttwdk4dXQMJE0+2M7TiEPSQijA/zdvjiaFsjm7ghLmyAJze1Yon9RL/JScF+2Ryqun/5LMMAN7vlEJ2FtYkBwCb9BpJNhmwSz5QH110nFvOo3cwgl+1cfFJyxtIT1ByEedrdRg7hfaETiHal7OG0MQcvJcQAh/xxjCEYq9ljRbWCDOYDWPnrmq4abqvZfZaXKg6xj5ZZIXQVWSbguCoao1zvWrxPAF5r2jJWlbL3AcAPRl2CdjmKWzubrf2xV0mwEGx+LbRwZB0ePw3jCg0+u+3QHtd2Dxs/25llk6zKB4KnfKDtlPSuBixFiQLXs2HowJN+0n0gLfbnSqCxsBeToDu7+tVkeMNa5CK6PMes8B2n2C1b7w4Q4bugf9BFFUMPZ2QXx738Bs6zXtI0nB42HV8fCIqtBfVtkdI7OeJRGj3JCvNajocz2gj5XdyW40alkcdPq7rqSqJecE6PfUIJIzDYlOmdcPbZlQjLhq1EWHPviycyIq4/Ddjj3oO747C97HsvoH7MwbCj+/A3hkP0sTJBcDUyCtMLIi54q1fZVKuWKU3jA92kWb06X0FPHBUH8PUF+0gw85sANcBRFTlLEMI7VDq/L8ahWMYCdx/J7+HWkClx6JJw=
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# AdequateSerializer
|
2
2
|
|
3
|
-
|
3
|
+
[![Gem Version][vb]][vl] [![Build Status][tb]][tl] [![Code Climate][cb]][cl]
|
4
4
|
|
5
|
-
|
5
|
+
A very opinionated lightweight serializer.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -22,20 +22,138 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
### Controller
|
26
|
+
|
27
|
+
Just use AdequateSerializer's `serialize` method to serialize your data.
|
28
|
+
It doesn't matter whether it is just one object or a collection.
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
class UsersController < ApplicationController
|
32
|
+
def index
|
33
|
+
@users = User.all
|
34
|
+
render json: serialize(@users)
|
35
|
+
end
|
36
|
+
|
37
|
+
def show
|
38
|
+
@user = User.find(params[:id])
|
39
|
+
render json: serialize(@user)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
44
|
+
The serialize method will infer the serializer's name from the class of the
|
45
|
+
object it serializes. In this case it will look for a `UserSerializer`.
|
46
|
+
|
47
|
+
If you want another serializer, you can just pass it to the `serialize`
|
48
|
+
method.
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
render json: serialize(@user, serializer: AdminSerializer)
|
52
|
+
```
|
53
|
+
|
54
|
+
### Root Key
|
55
|
+
|
56
|
+
By default the `serialize` method will infer the root key from the objects it
|
57
|
+
is serializing. For example, when you give it a user the root will be `user`
|
58
|
+
or rather `users` if you provide a collection of users.
|
59
|
+
|
60
|
+
You can also define the root key yourself:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
serialize(@user, root: :admin)
|
64
|
+
```
|
65
|
+
|
66
|
+
or use no root at all:
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
serialize(@user, root: false)
|
70
|
+
```
|
71
|
+
|
72
|
+
### Attributes
|
73
|
+
|
74
|
+
You can specify which attributes of your objects will be serialized in the
|
75
|
+
serializer.
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
class UserSerializer::Base
|
79
|
+
attributes :id, :full_name, :created_at, :updated_at
|
80
|
+
|
81
|
+
def full_name
|
82
|
+
"#{object.first_name} #{object.last_name}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
```
|
86
|
+
|
87
|
+
These can be attributes or methods of your model. You can also define methods
|
88
|
+
in the serializer itself and use them.
|
89
|
+
|
90
|
+
Within a serializer's methods, you can access the object being serialized as
|
91
|
+
`object`.
|
92
|
+
|
93
|
+
### Associations
|
94
|
+
|
95
|
+
If you want to include associations, just specify them in the controller.
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
serialize(@user, includes: :posts)
|
99
|
+
```
|
100
|
+
|
101
|
+
In this case the PostSerializer will be used to nest the user's posts under the
|
102
|
+
`posts` key in the user JSON object.
|
103
|
+
|
104
|
+
You can also include multiple associations by using an array of association
|
105
|
+
keys.
|
106
|
+
|
107
|
+
#### Overriding association methods
|
108
|
+
|
109
|
+
If you want to override any association, you can use:
|
110
|
+
|
111
|
+
```ruby
|
112
|
+
class UserSerializer::Base
|
113
|
+
attributes :id, :created_at, :updated_at
|
114
|
+
|
115
|
+
def posts
|
116
|
+
object.posts.published
|
117
|
+
end
|
118
|
+
end
|
119
|
+
```
|
26
120
|
|
27
121
|
## Development
|
28
122
|
|
29
|
-
After checking out the repo, run `bin/setup` to install dependencies.
|
123
|
+
After checking out the repo, run `bin/setup` to install dependencies.
|
124
|
+
Then, run `rake test` to run the tests. You can also run `bin/console` for an
|
125
|
+
interactive prompt that will allow you to experiment.
|
30
126
|
|
31
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
127
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
128
|
+
To release a new version, update the version number in `version.rb`,
|
129
|
+
and then run `bundle exec rake release`, which will create a git tag for the
|
130
|
+
version, push git commits and tags, and push the `.gem` file to
|
131
|
+
[rubygems.org][rg].
|
32
132
|
|
33
133
|
## Contributing
|
34
134
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub
|
135
|
+
Bug reports and pull requests are welcome on [GitHub][gh]. This project is
|
136
|
+
intended to be a safe, welcoming space for collaboration, and contributors
|
137
|
+
are expected to adhere to the [Contributor Covenant][cc] code of conduct.
|
138
|
+
|
139
|
+
## Credits
|
140
|
+
|
141
|
+
![netflower][nl]
|
36
142
|
|
143
|
+
AdequateSerializer is maintained by [netflower Ltd. & Co. KG][n].
|
37
144
|
|
38
145
|
## License
|
39
146
|
|
40
147
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
41
148
|
|
149
|
+
[vb]: https://badge.fury.io/rb/adequate_serializer.svg
|
150
|
+
[vl]: http://badge.fury.io/rb/adequate_serializer
|
151
|
+
[tb]: https://travis-ci.org/netflower/adequate_serializer.svg?branch=master
|
152
|
+
[tl]: https://travis-ci.org/netflower/adequate_serializer
|
153
|
+
[cb]: https://codeclimate.com/github/netflower/adequate_serializer/badges/gpa.svg
|
154
|
+
[cl]: https://codeclimate.com/github/netflower/adequate_serializer
|
155
|
+
[rg]: https://rubygems.org
|
156
|
+
[gh]: https://github.com/netflower/adequate_serializer
|
157
|
+
[cc]: contributor-covenant.org
|
158
|
+
[n]: http://netflower.de
|
159
|
+
[nl]: https://cloud.githubusercontent.com/assets/464565/5997997/91da2232-aac2-11e4-9278-fdf21fb8a6e9.png
|
@@ -81,8 +81,16 @@ module AdequateSerializer
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def serialize_association(association_key)
|
84
|
-
associated_objects =
|
84
|
+
associated_objects = associated_objects(association_key)
|
85
85
|
serialize(associated_objects, root: false)
|
86
86
|
end
|
87
|
+
|
88
|
+
def associated_objects(association_key)
|
89
|
+
if respond_to?(association_key)
|
90
|
+
send(association_key)
|
91
|
+
else
|
92
|
+
object.send(association_key)
|
93
|
+
end
|
94
|
+
end
|
87
95
|
end
|
88
96
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adequate_serializer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bastian Bartmann
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|