restpack_serializer 0.4.13 → 0.4.14

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c65793e190074e46598d0c1840e05fce55fd0c55
4
- data.tar.gz: 0d6d15e20c00d2123d3a3ac584f51edd908e9ec5
3
+ metadata.gz: 8a00410f5da13a4809d6e34a2691b65e7c17489c
4
+ data.tar.gz: f98e7fff30aefe3a917653a6d6407e22077bee8f
5
5
  SHA512:
6
- metadata.gz: f1b48f4b0c4cbc764d9de0a495e0ead2125ad07d96ebbd4bb69a18a72298890e167b7bceab57555a5f623d06caab26dc86b292ca5056de745df86bbd1a01a624
7
- data.tar.gz: e28f52414ae19524964d353a55fbc24380bfe5afff65d19739363828eb21aa6641e428aa60ae0bef55ac045087ee1cd7c0feeb28a8e9b5a04eca25fe56b21cdf
6
+ metadata.gz: b1b0bf8aac3022e67127598e102f0890e5d5476419914e03240faa156128ee4acdc3f12604c6cfdee98545e9bd0347447acbe52978a3b23f2f7373f87008b54a
7
+ data.tar.gz: eee7830a50cc6c9e1808d68c67568d9c1493ae8aa4634a1c6261bf0628f2036ad2d4e8b3f6293ca3db0d8f92ff55a8a3e2d1035184167500f0060755cabf8de8
data/Gemfile CHANGED
@@ -3,5 +3,3 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  gem 'coveralls', require: false
6
-
7
- gem 'protected_attributes'
data/README.md CHANGED
@@ -46,6 +46,27 @@ end
46
46
  }
47
47
  ```
48
48
 
49
+ `as_json` accepts an optional `context` hash parameter which can be used be your Serializers to customize their output:
50
+
51
+ ```ruby
52
+ class AlbumSerializer
53
+ include RestPack::Serializer
54
+ attributes :id, :title, :year, :artist_id, :extras
55
+ can_include :artists, :songs
56
+ can_filter_by :year
57
+
58
+ def extras
59
+ if @context[:admin?]
60
+ { markup_percent: 95 }
61
+ end
62
+ end
63
+ end
64
+ ```
65
+
66
+ ```ruby
67
+ AlbumSerializer.as_json(album, { admin?: true })
68
+ ```
69
+
49
70
  ## Exposing an API
50
71
 
51
72
  The `AlbumSerializer` provides `page` and `resource` methods which provide paged collection and singular resource GET endpoints.
@@ -67,12 +88,24 @@ These endpoint will live at URLs such as `/albums` and `/albums/142857`:
67
88
  * http://restpack-serializer-sample.herokuapp.com/api/v1/albums.json
68
89
  * http://restpack-serializer-sample.herokuapp.com/api/v1/albums/4.json
69
90
 
70
- Both `page` and `resource` methods take an optional scope argument allowing us to enforce arbitrary constraints:
91
+ The `AlbumSerializer` also provides a `single` method which will return a serialized resource similar to `as_json` above.
92
+
93
+ `page`, `resource` and `single` methods take an optional scope argument allowing us to enforce arbitrary constraints:
71
94
 
72
95
  ```ruby
73
96
  AlbumSerializer.page(params, Albums.where("year < 1950"))
74
97
  ```
75
98
 
99
+ In addition to `scope`, all three methods also accept an optional `context` hash:
100
+
101
+ ```ruby
102
+ AlbumSerializer.page(params, Albums.where("year < 1950"), { admin?: true })
103
+ ```
104
+
105
+ Other features:
106
+ * [Dynamically Include/Exclude Attributes](https://github.com/RestPack/restpack_serializer/blob/master/spec/serializable/serializer_spec.rb#L42)
107
+ * [Custom Attributes Hash](https://github.com/RestPack/restpack_serializer/blob/master/spec/serializable/serializer_spec.rb#L46)
108
+
76
109
  ## Paging
77
110
 
78
111
  Collections are paged by default. `page` and `page_size` parameters are available:
@@ -1,5 +1,6 @@
1
1
  require 'will_paginate'
2
2
  require 'will_paginate/active_record'
3
+ require 'protected_attributes'
3
4
 
4
5
  require 'restpack_serializer/version'
5
6
  require 'restpack_serializer/configuration'
@@ -1,5 +1,5 @@
1
1
  module RestPack
2
2
  module Serializer
3
- VERSION = '0.4.13'
3
+ VERSION = '0.4.14'
4
4
  end
5
5
  end
@@ -17,12 +17,12 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- gem.add_dependency 'activerecord', '~> 4.0'
21
- gem.add_dependency 'activesupport', '~> 4.0'
22
- gem.add_dependency 'protected_attributes', '~> 1.0.3'
23
- gem.add_dependency 'will_paginate', '~> 3.0'
24
- gem.add_dependency 'restpack_gem', '~> 0.0.9'
20
+ gem.add_dependency 'activerecord', '~> 4.0.3'
21
+ gem.add_dependency 'activesupport', '~> 4.0.3'
22
+ # gem.add_dependency 'protected_attributes', '~> 1.0.5'
23
+ gem.add_dependency 'will_paginate', '~> 3.0.5'
25
24
 
25
+ gem.add_development_dependency 'restpack_gem', '~> 0.0.9'
26
26
  gem.add_development_dependency 'rake', '~> 10.0.3'
27
27
  gem.add_development_dependency 'rspec', '~> 2.12'
28
28
  gem.add_development_dependency 'guard-rspec', '~> 2.5.4'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restpack_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.13
4
+ version: 0.4.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Joyce
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-01 00:00:00.000000000 Z
11
+ date: 2014-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,56 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: 4.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
- version: '4.0'
26
+ version: 4.0.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
33
+ version: 4.0.3
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: '4.0'
41
- - !ruby/object:Gem::Dependency
42
- name: protected_attributes
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ~>
46
- - !ruby/object:Gem::Version
47
- version: 1.0.3
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: 1.0.3
40
+ version: 4.0.3
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: will_paginate
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - ~>
60
46
  - !ruby/object:Gem::Version
61
- version: '3.0'
47
+ version: 3.0.5
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - ~>
67
53
  - !ruby/object:Gem::Version
68
- version: '3.0'
54
+ version: 3.0.5
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: restpack_gem
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -73,7 +59,7 @@ dependencies:
73
59
  - - ~>
74
60
  - !ruby/object:Gem::Version
75
61
  version: 0.0.9
76
- type: :runtime
62
+ type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements: