active_model_serializers 0.8.3 → 0.10.15
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 +5 -5
- data/CHANGELOG.md +726 -6
- data/{MIT-LICENSE.txt → MIT-LICENSE} +3 -2
- data/README.md +194 -545
- data/lib/action_controller/serialization.rb +53 -38
- data/lib/active_model/serializable_resource.rb +13 -0
- data/lib/active_model/serializer/adapter/attributes.rb +17 -0
- data/lib/active_model/serializer/adapter/base.rb +20 -0
- data/lib/active_model/serializer/adapter/json.rb +17 -0
- data/lib/active_model/serializer/adapter/json_api.rb +17 -0
- data/lib/active_model/serializer/adapter/null.rb +17 -0
- data/lib/active_model/serializer/adapter.rb +26 -0
- data/lib/active_model/serializer/array_serializer.rb +14 -0
- data/lib/active_model/serializer/association.rb +73 -0
- data/lib/active_model/serializer/attribute.rb +27 -0
- data/lib/active_model/serializer/belongs_to_reflection.rb +13 -0
- data/lib/active_model/serializer/collection_serializer.rb +99 -0
- data/lib/active_model/serializer/concerns/caching.rb +305 -0
- data/lib/active_model/serializer/error_serializer.rb +16 -0
- data/lib/active_model/serializer/errors_serializer.rb +34 -0
- data/lib/active_model/serializer/field.rb +92 -0
- data/lib/active_model/serializer/fieldset.rb +33 -0
- data/lib/active_model/serializer/has_many_reflection.rb +12 -0
- data/lib/active_model/serializer/has_one_reflection.rb +9 -0
- data/lib/active_model/serializer/lazy_association.rb +99 -0
- data/lib/active_model/serializer/link.rb +23 -0
- data/lib/active_model/serializer/lint.rb +152 -0
- data/lib/active_model/serializer/null.rb +19 -0
- data/lib/active_model/serializer/reflection.rb +212 -0
- data/lib/active_model/serializer/version.rb +7 -0
- data/lib/active_model/serializer.rb +354 -442
- data/lib/active_model_serializers/adapter/attributes.rb +36 -0
- data/lib/active_model_serializers/adapter/base.rb +85 -0
- data/lib/active_model_serializers/adapter/json.rb +23 -0
- data/lib/active_model_serializers/adapter/json_api/deserialization.rb +215 -0
- data/lib/active_model_serializers/adapter/json_api/error.rb +98 -0
- data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +51 -0
- data/lib/active_model_serializers/adapter/json_api/link.rb +85 -0
- data/lib/active_model_serializers/adapter/json_api/meta.rb +39 -0
- data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +94 -0
- data/lib/active_model_serializers/adapter/json_api/relationship.rb +106 -0
- data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +68 -0
- data/lib/active_model_serializers/adapter/json_api.rb +535 -0
- data/lib/active_model_serializers/adapter/null.rb +11 -0
- data/lib/active_model_serializers/adapter.rb +100 -0
- data/lib/active_model_serializers/callbacks.rb +57 -0
- data/lib/active_model_serializers/deprecate.rb +56 -0
- data/lib/active_model_serializers/deserialization.rb +17 -0
- data/lib/active_model_serializers/json_pointer.rb +16 -0
- data/lib/active_model_serializers/logging.rb +124 -0
- data/lib/active_model_serializers/lookup_chain.rb +82 -0
- data/lib/active_model_serializers/model.rb +132 -0
- data/lib/active_model_serializers/railtie.rb +62 -0
- data/lib/active_model_serializers/register_jsonapi_renderer.rb +80 -0
- data/lib/active_model_serializers/serializable_resource.rb +84 -0
- data/lib/active_model_serializers/serialization_context.rb +41 -0
- data/lib/active_model_serializers/test/schema.rb +140 -0
- data/lib/active_model_serializers/test/serializer.rb +127 -0
- data/lib/active_model_serializers/test.rb +9 -0
- data/lib/active_model_serializers.rb +49 -81
- data/lib/generators/rails/USAGE +6 -0
- data/lib/generators/rails/resource_override.rb +12 -0
- data/lib/generators/rails/serializer_generator.rb +38 -0
- data/lib/generators/rails/templates/serializer.rb.erb +8 -0
- data/lib/grape/active_model_serializers.rb +18 -0
- data/lib/grape/formatters/active_model_serializers.rb +34 -0
- data/lib/grape/helpers/active_model_serializers.rb +19 -0
- data/lib/tasks/rubocop.rake +60 -0
- metadata +240 -51
- data/.gitignore +0 -18
- data/.travis.yml +0 -28
- data/DESIGN.textile +0 -586
- data/Gemfile +0 -4
- data/Gemfile.edge +0 -9
- data/Rakefile +0 -18
- data/active_model_serializers.gemspec +0 -24
- data/bench/perf.rb +0 -43
- data/cruft.md +0 -19
- data/lib/active_model/array_serializer.rb +0 -104
- data/lib/active_model/serializer/associations.rb +0 -233
- data/lib/active_model/serializers/version.rb +0 -5
- data/lib/active_record/serializer_override.rb +0 -16
- data/lib/generators/resource_override.rb +0 -13
- data/lib/generators/serializer/USAGE +0 -9
- data/lib/generators/serializer/serializer_generator.rb +0 -42
- data/lib/generators/serializer/templates/serializer.rb +0 -19
- data/test/array_serializer_test.rb +0 -75
- data/test/association_test.rb +0 -592
- data/test/caching_test.rb +0 -96
- data/test/generators_test.rb +0 -85
- data/test/no_serialization_scope_test.rb +0 -34
- data/test/serialization_scope_name_test.rb +0 -67
- data/test/serialization_test.rb +0 -392
- data/test/serializer_support_test.rb +0 -51
- data/test/serializer_test.rb +0 -1465
- data/test/test_fakes.rb +0 -217
- data/test/test_helper.rb +0 -32
data/test/test_fakes.rb
DELETED
@@ -1,217 +0,0 @@
|
|
1
|
-
class BasicActiveModel
|
2
|
-
include ActiveModel::Serializers::JSON
|
3
|
-
def initialize(hash = {})
|
4
|
-
@attributes = hash
|
5
|
-
end
|
6
|
-
|
7
|
-
def serializable_hash(*)
|
8
|
-
@attributes
|
9
|
-
end
|
10
|
-
|
11
|
-
def method_missing(method)
|
12
|
-
if @attributes.key? method
|
13
|
-
@attributes[method]
|
14
|
-
else
|
15
|
-
raise NoMethodError
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class BasicSerializer < ActiveModel::Serializer
|
21
|
-
attributes :name
|
22
|
-
end
|
23
|
-
|
24
|
-
class Model
|
25
|
-
def initialize(hash={})
|
26
|
-
@attributes = hash
|
27
|
-
end
|
28
|
-
|
29
|
-
def read_attribute_for_serialization(name)
|
30
|
-
@attributes[name]
|
31
|
-
end
|
32
|
-
|
33
|
-
def as_json(*)
|
34
|
-
{ :model => "Model" }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
class User
|
39
|
-
include ActiveModel::SerializerSupport
|
40
|
-
|
41
|
-
attr_accessor :superuser
|
42
|
-
|
43
|
-
def initialize(hash={})
|
44
|
-
@attributes = hash.merge(:first_name => "Jose", :last_name => "Valim", :password => "oh noes yugive my password")
|
45
|
-
end
|
46
|
-
|
47
|
-
def read_attribute_for_serialization(name)
|
48
|
-
@attributes[name]
|
49
|
-
end
|
50
|
-
|
51
|
-
def super_user?
|
52
|
-
@superuser
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
class Post < Model
|
57
|
-
def initialize(attributes)
|
58
|
-
super(attributes)
|
59
|
-
self.comments ||= []
|
60
|
-
self.comments_disabled = false
|
61
|
-
self.author = nil
|
62
|
-
end
|
63
|
-
|
64
|
-
attr_accessor :comments, :comments_disabled, :author
|
65
|
-
def active_model_serializer; PostSerializer; end
|
66
|
-
end
|
67
|
-
|
68
|
-
class Comment < Model
|
69
|
-
def active_model_serializer; CommentSerializer; end
|
70
|
-
end
|
71
|
-
|
72
|
-
class UserSerializer < ActiveModel::Serializer
|
73
|
-
attributes :first_name, :last_name
|
74
|
-
|
75
|
-
def serializable_hash
|
76
|
-
attributes.merge(:ok => true).merge(options[:scope])
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
class UserAttributesWithKeySerializer < ActiveModel::Serializer
|
81
|
-
attributes :first_name => :f_name, :last_name => :l_name
|
82
|
-
|
83
|
-
def serializable_hash
|
84
|
-
attributes.merge(:ok => true).merge(options[:scope])
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
class UserAttributesWithSomeKeySerializer < ActiveModel::Serializer
|
89
|
-
attributes :first_name, :last_name => :l_name
|
90
|
-
|
91
|
-
def serializable_hash
|
92
|
-
attributes.merge(:ok => true).merge(options[:scope])
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
class UserAttributesWithUnsymbolizableKeySerializer < ActiveModel::Serializer
|
97
|
-
attributes :first_name, :last_name => :"last-name"
|
98
|
-
|
99
|
-
def serializable_hash
|
100
|
-
attributes.merge(:ok => true).merge(options[:scope])
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
class DefaultUserSerializer < ActiveModel::Serializer
|
105
|
-
attributes :first_name, :last_name
|
106
|
-
end
|
107
|
-
|
108
|
-
class MyUserSerializer < ActiveModel::Serializer
|
109
|
-
attributes :first_name, :last_name
|
110
|
-
|
111
|
-
def serializable_hash
|
112
|
-
hash = attributes
|
113
|
-
hash = hash.merge(:super_user => true) if object.super_user?
|
114
|
-
hash
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
class CommentSerializer
|
119
|
-
def initialize(comment, options={})
|
120
|
-
@object = comment
|
121
|
-
end
|
122
|
-
|
123
|
-
attr_reader :object
|
124
|
-
|
125
|
-
def serializable_hash
|
126
|
-
{ :title => @object.read_attribute_for_serialization(:title) }
|
127
|
-
end
|
128
|
-
|
129
|
-
def as_json(options=nil)
|
130
|
-
options ||= {}
|
131
|
-
if options[:root] == false
|
132
|
-
serializable_hash
|
133
|
-
else
|
134
|
-
{ :comment => serializable_hash }
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
class PostSerializer < ActiveModel::Serializer
|
140
|
-
attributes :title, :body
|
141
|
-
has_many :comments, :serializer => CommentSerializer
|
142
|
-
end
|
143
|
-
|
144
|
-
class PostWithConditionalCommentsSerializer < ActiveModel::Serializer
|
145
|
-
root :post
|
146
|
-
attributes :title, :body
|
147
|
-
has_many :comments, :serializer => CommentSerializer
|
148
|
-
|
149
|
-
def include_associations!
|
150
|
-
include! :comments unless object.comments_disabled
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
class PostWithMultipleConditionalsSerializer < ActiveModel::Serializer
|
155
|
-
root :post
|
156
|
-
attributes :title, :body, :author
|
157
|
-
has_many :comments, :serializer => CommentSerializer
|
158
|
-
|
159
|
-
def include_comments?
|
160
|
-
!object.comments_disabled
|
161
|
-
end
|
162
|
-
|
163
|
-
def include_author?
|
164
|
-
scope.super_user?
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
class Blog < Model
|
169
|
-
attr_accessor :author
|
170
|
-
end
|
171
|
-
|
172
|
-
class AuthorSerializer < ActiveModel::Serializer
|
173
|
-
attributes :first_name, :last_name
|
174
|
-
end
|
175
|
-
|
176
|
-
class BlogSerializer < ActiveModel::Serializer
|
177
|
-
has_one :author, :serializer => AuthorSerializer
|
178
|
-
end
|
179
|
-
|
180
|
-
class BlogWithRootSerializer < BlogSerializer
|
181
|
-
root true
|
182
|
-
end
|
183
|
-
|
184
|
-
class CustomPostSerializer < ActiveModel::Serializer
|
185
|
-
attributes :title
|
186
|
-
end
|
187
|
-
|
188
|
-
class CustomBlog < Blog
|
189
|
-
attr_accessor :public_posts, :public_user
|
190
|
-
end
|
191
|
-
|
192
|
-
class CustomBlogSerializer < ActiveModel::Serializer
|
193
|
-
has_many :public_posts, :key => :posts, :serializer => PostSerializer
|
194
|
-
has_one :public_user, :key => :user, :serializer => UserSerializer
|
195
|
-
end
|
196
|
-
|
197
|
-
class SomeSerializer < ActiveModel::Serializer
|
198
|
-
attributes :some
|
199
|
-
end
|
200
|
-
|
201
|
-
class SomeObject < Struct.new(:some)
|
202
|
-
end
|
203
|
-
|
204
|
-
# Set up some classes for polymorphic testing
|
205
|
-
class Attachment < Model
|
206
|
-
def attachable
|
207
|
-
@attributes[:attachable]
|
208
|
-
end
|
209
|
-
|
210
|
-
def readable
|
211
|
-
@attributes[:readable]
|
212
|
-
end
|
213
|
-
|
214
|
-
def edible
|
215
|
-
@attributes[:edible]
|
216
|
-
end
|
217
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
require "bundler/setup"
|
3
|
-
|
4
|
-
require "pry"
|
5
|
-
|
6
|
-
require "active_model_serializers"
|
7
|
-
require "active_support/json"
|
8
|
-
require "minitest/autorun"
|
9
|
-
|
10
|
-
require 'rails'
|
11
|
-
|
12
|
-
module TestHelper
|
13
|
-
Routes = ActionDispatch::Routing::RouteSet.new
|
14
|
-
Routes.draw do
|
15
|
-
resource :hypermedia
|
16
|
-
get ':controller(/:action(/:id))'
|
17
|
-
get ':controller(/:action)'
|
18
|
-
end
|
19
|
-
|
20
|
-
ActionController::Base.send :include, Routes.url_helpers
|
21
|
-
ActiveModel::Serializer.send :include, Routes.url_helpers
|
22
|
-
end
|
23
|
-
|
24
|
-
ActiveSupport::TestCase.class_eval do
|
25
|
-
setup do
|
26
|
-
@routes = ::TestHelper::Routes
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class Object
|
31
|
-
undef_method :id if respond_to?(:id)
|
32
|
-
end
|