active_model_serializers_rails_2.3 0.9.0.pre1 → 0.9.0.pre2

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.
data/README.md CHANGED
@@ -10,9 +10,17 @@ This is a backport of the ActiveModel::Serializers gem to be compatible with
10
10
  Rails 2.3. The following features have been removed:
11
11
 
12
12
  * Controller `render` method support. This means you'll need to instantiate
13
- the serializer yourself and pass it to `render`. E.g. `render :json => FooSerializer.new(foo)`
14
- * `current_user` and such support. Might be baked in later.
13
+ the serializer yourself and pass it to `render`. E.g. `render :json => FooSerializer.new(foo, scope: user)`
15
14
  * Generators are gone as well.
15
+ * Probably won't be supported for a long amount of time. Please do your best to upgrade
16
+ to rails 3.2+ as soon as possible. Feel free to open an issue whenever I run
17
+ too far behind upstream's master branch.
18
+
19
+ ## Rails 2-3- 0.9.0
20
+
21
+ **Rails 2-3 is under development, there are some incompatible changes with the current stable release.**
22
+
23
+ If you want to read the stable documentation visit [0.8 README](https://github.com/rails-api/active_model_serializers/blob/0-8-stable/README.md)
16
24
 
17
25
  ## Purpose
18
26
 
@@ -33,7 +41,7 @@ The easiest way to install `ActiveModel::Serializers` is to add it to your
33
41
  `Gemfile`:
34
42
 
35
43
  ```ruby
36
- gem "active_model_serializers_rails2.3"
44
+ gem "active_model_serializers_rails2.3", git: "https://github.com/fivetanley/active_model_serializers", branch: 'rails-2.3'
37
45
  ```
38
46
 
39
47
  Then, install it on the command line:
@@ -14,9 +14,7 @@ module ActiveModel
14
14
 
15
15
  def initialize(object, options={})
16
16
  @object = object
17
- @root = options[:root]
18
- @root = self.class._root if @root.nil?
19
- @root = options[:resource_name] if @root.nil?
17
+ @root = options.fetch(:root, self.class._root)
20
18
  @meta_key = options[:meta_key] || :meta
21
19
  @meta = options[@meta_key]
22
20
  @each_serializer = options[:each_serializer]
@@ -24,12 +22,30 @@ module ActiveModel
24
22
  end
25
23
  attr_accessor :object, :root, :meta_key, :meta
26
24
 
25
+ def json_key
26
+ if root.nil?
27
+ @options[:resource_name]
28
+ else
29
+ root
30
+ end
31
+ end
32
+
33
+ def serializer_for(item)
34
+ serializer_class = @each_serializer || Serializer.serializer_for(item) || DefaultSerializer
35
+ serializer_class.new(item, @options)
36
+ end
37
+
27
38
  def serializable_array
28
39
  @object.map do |item|
29
- serializer = @each_serializer || Serializer.serializer_for(item) || DefaultSerializer
30
- serializer.new(item, @options).serializable_object
40
+ serializer_for(item).serializable_object
31
41
  end
32
42
  end
33
43
  alias_method :serializable_object, :serializable_array
44
+
45
+ def embedded_in_root_associations
46
+ @object.each_with_object({}) do |item, hash|
47
+ hash.merge!(serializer_for(item).embedded_in_root_associations)
48
+ end
49
+ end
34
50
  end
35
51
  end
@@ -1,18 +1,27 @@
1
+ require 'active_model/serializable'
2
+
1
3
  module ActiveModel
2
4
  # DefaultSerializer
3
5
  #
4
6
  # Provides a constant interface for all items
5
7
  class DefaultSerializer
8
+ include ActiveModel::Serializable
9
+
6
10
  attr_reader :object
7
11
 
8
12
  def initialize(object, options=nil)
9
13
  @object = object
10
14
  end
11
15
 
12
- def serializable_hash(*)
16
+ def as_json(options={})
13
17
  return nil if @object.nil?
14
- @object.as_json
18
+ if @object.is_a?(Struct)
19
+ Hash[@object.members.zip(@object.values)]
20
+ else
21
+ @object.as_json
22
+ end
15
23
  end
16
- alias serializable_object serializable_hash
24
+ alias serializable_hash as_json
25
+ alias serializable_object as_json
17
26
  end
18
27
  end
@@ -1,7 +1,7 @@
1
1
  module ActiveModel
2
2
  module Serializable
3
3
  def as_json(options={})
4
- if root = options[:root] || self.root
4
+ if root = options.fetch(:root, json_key)
5
5
  hash = { root => serializable_object }
6
6
  hash.merge!(serializable_data)
7
7
  hash
@@ -11,11 +11,15 @@ module ActiveModel
11
11
  end
12
12
 
13
13
  def serializable_data
14
- if respond_to?(:meta) && meta
15
- { meta_key => meta }
16
- else
17
- {}
14
+ embedded_in_root_associations.tap do |hash|
15
+ if respond_to?(:meta) && meta
16
+ hash[meta_key] = meta
17
+ end
18
18
  end
19
19
  end
20
+
21
+ def embedded_in_root_associations
22
+ {}
23
+ end
20
24
  end
21
25
  end
@@ -15,6 +15,7 @@ end
15
15
  module ActiveModel
16
16
  class Serializer
17
17
  include Serializable
18
+ extend ActiveSupport::Inflector
18
19
 
19
20
  @mutex = Mutex.new
20
21
 
@@ -23,6 +24,24 @@ module ActiveModel
23
24
  base._attributes = []
24
25
  base._associations = {}
25
26
  end
27
+ def const_regexp(camel_cased_word) #:nodoc:
28
+ parts = camel_cased_word.split("::")
29
+ last = parts.pop
30
+
31
+ parts.reverse.inject(last) do |acc, part|
32
+ part.empty? ? acc : "#{part}(::#{acc})?"
33
+ end
34
+ end
35
+ def safe_constantize(camel_cased_word)
36
+ begin
37
+ constantize(camel_cased_word)
38
+ rescue NameError => e
39
+ raise unless e.message =~ /(uninitialized constant|wrong constant name) #{const_regexp(camel_cased_word)}$/ ||
40
+ e.name.to_s == camel_cased_word.to_s
41
+ rescue ArgumentError => e
42
+ raise unless e.message =~ /not missing constant #{const_regexp(camel_cased_word)}\!$/
43
+ end
44
+ end
26
45
 
27
46
  def setup
28
47
  @mutex.synchronize do
@@ -61,7 +80,7 @@ end
61
80
  if resource.respond_to?(:to_ary)
62
81
  ArraySerializer
63
82
  else
64
- "#{resource.class.name}Serializer".safe_constantize
83
+ safe_constantize "#{resource.class.name}Serializer"
65
84
  end
66
85
  end
67
86
  end
@@ -110,17 +129,18 @@ end
110
129
  def initialize(object, options={})
111
130
  @object = object
112
131
  @scope = options[:scope]
113
- self.root = options[:root]
132
+ @root = options.fetch(:root, self.class._root)
114
133
  @meta_key = options[:meta_key] || :meta
115
134
  @meta = options[@meta_key]
116
135
  end
117
- attr_accessor :object, :scope, :meta_key, :meta
118
- attr_reader :root
136
+ attr_accessor :object, :scope, :meta_key, :meta, :root
119
137
 
120
- def root=(root)
121
- @root = root
122
- @root = self.class._root if @root.nil?
123
- @root = self.class.root_name if @root == true || @root.nil?
138
+ def json_key
139
+ if root == true || root.nil?
140
+ self.class.root_name
141
+ else
142
+ root
143
+ end
124
144
  end
125
145
 
126
146
  def attributes
@@ -137,7 +157,8 @@ end
137
157
  if association.embed_ids?
138
158
  hash[association.key] = serialize_ids association
139
159
  elsif association.embed_objects?
140
- hash[association.embedded_key] = serialize association
160
+ associated_data = send(association.name)
161
+ hash[association.embedded_key] = serialize(association, associated_data)
141
162
  end
142
163
  end
143
164
  end
@@ -147,31 +168,21 @@ end
147
168
  keys
148
169
  end
149
170
 
150
- def serializable_data
151
- embedded_in_root_associations.merge!(super)
152
- end
153
-
154
171
  def embedded_in_root_associations
155
172
  associations = self.class._associations
156
173
  included_associations = filter(associations.keys)
157
174
  associations.each_with_object({}) do |(name, association), hash|
158
175
  if included_associations.include? name
159
176
  if association.embed_in_root?
160
- hash[association.embedded_key] = serialize association
177
+ associated_data = Array(send(association.name))
178
+ hash[association.root_key] = serialize(association, associated_data)
161
179
  end
162
180
  end
163
181
  end
164
182
  end
165
183
 
166
- def serialize(association)
167
- associated_data = send(association.name)
168
- if associated_data.respond_to?(:to_ary) &&
169
- !(association.serializer_class &&
170
- association.serializer_class <= ArraySerializer)
171
- associated_data.map { |elem| association.build_serializer(elem).serializable_hash }
172
- else
173
- association.build_serializer(associated_data).serializable_object
174
- end
184
+ def serialize(association, object)
185
+ association.build_serializer(object, scope: scope).serializable_object
175
186
  end
176
187
 
177
188
  def serialize_ids(association)
@@ -190,4 +201,5 @@ end
190
201
  end
191
202
  alias_method :serializable_object, :serializable_hash
192
203
  end
204
+
193
205
  end
@@ -19,40 +19,65 @@ module ActiveModel
19
19
  @key = options[:key]
20
20
  @embedded_key = options[:root] || name
21
21
 
22
- self.serializer_class = @options[:serializer]
22
+ serializer = @options[:serializer]
23
+ @serializer_class = serializer.is_a?(String) ? serializer.constantize : serializer
23
24
  end
24
25
 
25
- attr_reader :name, :embed_ids, :embed_objects, :serializer_class
26
- attr_accessor :embed_in_root, :embed_key, :key, :embedded_key, :options
26
+ attr_reader :name, :embed_ids, :embed_objects
27
+ attr_accessor :embed_in_root, :embed_key, :key, :embedded_key, :root_key, :serializer_class, :options
27
28
  alias embed_ids? embed_ids
28
29
  alias embed_objects? embed_objects
29
30
  alias embed_in_root? embed_in_root
30
31
 
31
- def serializer_class=(serializer)
32
- @serializer_class = serializer.is_a?(String) ? serializer.constantize : serializer
33
- end
34
-
35
32
  def embed=(embed)
36
33
  @embed_ids = embed == :id || embed == :ids
37
34
  @embed_objects = embed == :object || embed == :objects
38
35
  end
39
36
 
40
- def build_serializer(object)
41
- @serializer_class ||= Serializer.serializer_for(object) || DefaultSerializer
42
- @serializer_class.new(object, @options)
37
+ def build_serializer(object, options = {})
38
+ @serializer_class.new(object, options.merge(@options))
39
+ end
40
+
41
+ private
42
+
43
+ def use_array_serializer!
44
+ @options.merge!(each_serializer: @serializer_class)
45
+ @serializer_class = ArraySerializer
43
46
  end
44
47
 
45
48
  class HasOne < Association
46
- def initialize(*args)
49
+ def initialize(name, *args)
50
+ super
51
+ @root_key = @embedded_key.to_s.pluralize
52
+ @key ||= "#{name}_id"
53
+ end
54
+
55
+ def build_serializer(object, options = {})
56
+ if object.respond_to?(:to_ary)
57
+ use_array_serializer!
58
+ else
59
+ @serializer_class ||= Serializer.serializer_for(object) || DefaultSerializer
60
+ end
61
+
47
62
  super
48
- @key ||= "#{name}_id"
49
63
  end
50
64
  end
51
65
 
52
66
  class HasMany < Association
53
- def initialize(*args)
67
+ def initialize(name, *args)
68
+ super
69
+ @root_key = @embedded_key
70
+ @key ||= "#{name.to_s.singularize}_ids"
71
+ end
72
+
73
+ def build_serializer(object, options = {})
74
+ if @serializer_class && !(@serializer_class <= ArraySerializer)
75
+ use_array_serializer!
76
+ else
77
+ @serializer_class ||= ArraySerializer
78
+ end
79
+
54
80
  super
55
- @key ||= "#{name.singularize}_ids"
56
81
  end
57
82
  end
58
83
  end
@@ -0,0 +1,14 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
3
+
4
+ module Rails
5
+ module Generators
6
+ class ScaffoldControllerGenerator
7
+ if Rails::VERSION::MAJOR >= 4
8
+ source_root File.expand_path('../templates', __FILE__)
9
+
10
+ hook_for :serializer, default: true
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,93 @@
1
+ <% if namespaced? -%>
2
+ require_dependency "<%= namespaced_file_path %>/application_controller"
3
+
4
+ <% end -%>
5
+ <% module_namespacing do -%>
6
+ class <%= controller_class_name %>Controller < ApplicationController
7
+ before_action :set_<%= singular_table_name %>, only: [:show, :edit, :update, :destroy]
8
+
9
+ # GET <%= route_url %>
10
+ # GET <%= route_url %>.json
11
+ def index
12
+ @<%= plural_table_name %> = <%= orm_class.all(class_name) %>
13
+
14
+ respond_to do |format|
15
+ format.html # index.html.erb
16
+ format.json { render json: <%= "@#{plural_table_name}" %> }
17
+ end
18
+ end
19
+
20
+ # GET <%= route_url %>/1
21
+ # GET <%= route_url %>/1.json
22
+ def show
23
+ respond_to do |format|
24
+ format.html # show.html.erb
25
+ format.json { render json: <%= "@#{singular_table_name}" %> }
26
+ end
27
+ end
28
+
29
+ # GET <%= route_url %>/new
30
+ def new
31
+ @<%= singular_table_name %> = <%= orm_class.build(class_name) %>
32
+ end
33
+
34
+ # GET <%= route_url %>/1/edit
35
+ def edit
36
+ end
37
+
38
+ # POST <%= route_url %>
39
+ # POST <%= route_url %>.json
40
+ def create
41
+ @<%= singular_table_name %> = <%= orm_class.build(class_name, "#{singular_table_name}_params") %>
42
+
43
+ respond_to do |format|
44
+ if @<%= orm_instance.save %>
45
+ format.html { redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully created.'" %> }
46
+ format.json { render json: <%= "@#{singular_table_name}" %>, status: :created }
47
+ else
48
+ format.html { render action: 'new' }
49
+ format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity }
50
+ end
51
+ end
52
+ end
53
+
54
+ # PATCH/PUT <%= route_url %>/1
55
+ # PATCH/PUT <%= route_url %>/1.json
56
+ def update
57
+ respond_to do |format|
58
+ if @<%= orm_instance.update("#{singular_table_name}_params") %>
59
+ format.html { redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully updated.'" %> }
60
+ format.json { head :no_content }
61
+ else
62
+ format.html { render action: 'edit' }
63
+ format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity }
64
+ end
65
+ end
66
+ end
67
+
68
+ # DELETE <%= route_url %>/1
69
+ # DELETE <%= route_url %>/1.json
70
+ def destroy
71
+ @<%= orm_instance.destroy %>
72
+ respond_to do |format|
73
+ format.html { redirect_to <%= index_helper %>_url }
74
+ format.json { head :no_content }
75
+ end
76
+ end
77
+
78
+ private
79
+ # Use callbacks to share common setup or constraints between actions.
80
+ def set_<%= singular_table_name %>
81
+ @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
82
+ end
83
+
84
+ # Never trust parameters from the scary internet, only allow the white list through.
85
+ def <%= "#{singular_table_name}_params" %>
86
+ <%- if attributes_names.empty? -%>
87
+ params[<%= ":#{singular_table_name}" %>]
88
+ <%- else -%>
89
+ params.require(<%= ":#{singular_table_name}" %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
90
+ <%- end -%>
91
+ end
92
+ end
93
+ <% end -%>
@@ -3,6 +3,7 @@ module ActiveModel
3
3
  initializer 'generators' do |app|
4
4
  require 'rails/generators'
5
5
  require 'active_model/serializer/generators/serializer/serializer_generator'
6
+ require 'active_model/serializer/generators/serializer/scaffold_controller_generator'
6
7
  Rails::Generators.configure!(app.config.generators)
7
8
  require 'active_model/serializer/generators/resource_override'
8
9
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveModel
2
2
  class Serializer
3
- VERSION = "0.9.0.pre1"
3
+ VERSION = "0.9.0.pre2"
4
4
  end
5
5
  end
@@ -1,10 +1,26 @@
1
1
  require 'active_support'
2
- require 'active_model/as_json_overrides'
2
+ require 'active_record'
3
3
  require 'active_model/serializer'
4
4
  require 'active_model/serializer_support'
5
5
  require 'active_model/serializer/version'
6
- require 'active_model/serializer/railtie' if defined?(Rails)
6
+ require 'active_model/serializer/railtie' if defined?(Rails) && defined?(Rails::Railtie)
7
7
 
8
+ ActiveModel::Errors = ActiveRecord::Errors #fix for authlogic gem
9
+
10
+ module ActiveSupport
11
+ module Inflector
12
+ def safe_constantize(camel_cased_word)
13
+ begin
14
+ constantize(camel_cased_word)
15
+ rescue NameError => e
16
+ raise unless e.message =~ /(uninitialized constant|wrong constant name) #{const_regexp(camel_cased_word)}$/ ||
17
+ e.name.to_s == camel_cased_word.to_s
18
+ rescue ArgumentError => e
19
+ raise unless e.message =~ /not missing constant #{const_regexp(camel_cased_word)}\!$/
20
+ end
21
+ end
22
+ end
23
+ end
8
24
  begin
9
25
  require 'action_controller'
10
26
  require 'action_controller/serialization'
@@ -51,24 +51,24 @@ module ActiveModel
51
51
  ar_comments: [{ body: 'what a dumb post', ar_tags: [{ name: 'short' }, { name: 'whiny' }] },
52
52
  { body: 'i liked it', ar_tags: [{:name=>"short"}, {:name=>"happy"}] }],
53
53
  ar_tags: [{ name: 'short' }, { name: 'whiny' }, { name: 'happy' }],
54
- ar_section: { 'name' => 'ruby' }
54
+ 'ar_sections' => [{ 'name' => 'ruby' }]
55
55
  }, post_serializer.as_json)
56
56
  end
57
57
  end
58
58
 
59
59
  private
60
60
 
61
- def embed(klass, options = {})
62
- old_assocs = Hash[ARPostSerializer._associations.to_a.map { |(name, association)| [name, association.dup] }]
61
+ def embed(serializer_class, options = {})
62
+ old_assocs = Hash[serializer_class._associations.to_a.map { |(name, association)| [name, association.dup] }]
63
63
 
64
- ARPostSerializer._associations.each_value do |association|
64
+ serializer_class._associations.each_value do |association|
65
65
  association.embed = options[:embed]
66
66
  association.embed_in_root = options[:embed_in_root]
67
67
  end
68
68
 
69
69
  yield
70
70
  ensure
71
- ARPostSerializer._associations = old_assocs
71
+ serializer_class._associations = old_assocs
72
72
  end
73
73
  end
74
74
  end
@@ -131,7 +131,7 @@ module ActiveModel
131
131
  }, @post_serializer.as_json)
132
132
  end
133
133
 
134
- def test_associations_using_a_given_array_serializer
134
+ def test_associations_embedding_ids_using_a_given_array_serializer
135
135
  @association.embed = :ids
136
136
  @association.embed_in_root = true
137
137
  @association.serializer_class = Class.new(ActiveModel::ArraySerializer) do
@@ -145,6 +145,18 @@ module ActiveModel
145
145
  comments: { my_content: ['fake'] }
146
146
  }, @post_serializer.as_json)
147
147
  end
148
+
149
+ def test_associations_embedding_objects_using_a_given_array_serializer
150
+ @association.serializer_class = Class.new(ActiveModel::ArraySerializer) do
151
+ def serializable_object
152
+ { my_content: ['fake'] }
153
+ end
154
+ end
155
+
156
+ assert_equal({
157
+ 'post' => { title: 'Title 1', body: 'Body 1', comments: { my_content: ['fake'] } }
158
+ }, @post_serializer.as_json)
159
+ end
148
160
  end
149
161
  end
150
162
  end
@@ -112,11 +112,11 @@ module ActiveModel
112
112
 
113
113
  assert_equal({
114
114
  'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id },
115
- profile: { name: 'N1', description: 'D1' }
115
+ 'profiles' => [{ name: 'N1', description: 'D1' }]
116
116
  }, @user_serializer.as_json)
117
117
  end
118
118
 
119
- def test_associations_using_a_given_serializer
119
+ def test_associations_embedding_ids_using_a_given_serializer
120
120
  @association.embed = :ids
121
121
  @association.embed_in_root = true
122
122
  @association.serializer_class = Class.new(ActiveModel::Serializer) do
@@ -129,7 +129,21 @@ module ActiveModel
129
129
 
130
130
  assert_equal({
131
131
  'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id },
132
- profile: { name: 'fake' }
132
+ 'profiles' => [{ name: 'fake' }]
133
+ }, @user_serializer.as_json)
134
+ end
135
+
136
+ def test_associations_embedding_objects_using_a_given_serializer
137
+ @association.serializer_class = Class.new(ActiveModel::Serializer) do
138
+ def name
139
+ 'fake'
140
+ end
141
+
142
+ attributes :name
143
+ end
144
+
145
+ assert_equal({
146
+ 'user' => { name: 'Name 1', email: 'mail@server.com', profile: { name: 'fake' } }
133
147
  }, @user_serializer.as_json)
134
148
  end
135
149
  end
@@ -17,5 +17,33 @@ module ActiveModel
17
17
  'user'
18
18
  end
19
19
  end
20
+
21
+ class NestedScopeTest < ActiveSupport::TestCase
22
+ def setup
23
+ @association = UserSerializer._associations[:profile]
24
+ @old_association = @association.dup
25
+ @user = User.new({ name: 'Name 1', email: 'mail@server.com', gender: 'M' })
26
+ @user_serializer = UserSerializer.new(@user, scope: 'user')
27
+ end
28
+
29
+ def teardown
30
+ UserSerializer._associations[:profile] = @old_association
31
+ end
32
+
33
+ def test_scope_passed_through
34
+ @association.serializer_class = Class.new(ActiveModel::Serializer) do
35
+ def name
36
+ scope
37
+ end
38
+
39
+ attributes :name
40
+ end
41
+
42
+ assert_equal({
43
+ name: 'Name 1', email: 'mail@server.com', profile: { name: 'user' }
44
+ }, @user_serializer.serializable_hash)
45
+ end
46
+ end
47
+
20
48
  end
21
49
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers_rails_2.3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.pre1
4
+ version: 0.9.0.pre2
5
+ prerelease: 6
5
6
  platform: ruby
6
7
  authors:
7
8
  - José Valim
@@ -10,11 +11,12 @@ authors:
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2013-11-04 00:00:00.000000000 Z
14
+ date: 2013-11-25 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: rails
17
18
  requirement: !ruby/object:Gem::Requirement
19
+ none: false
18
20
  requirements:
19
21
  - - ~>
20
22
  - !ruby/object:Gem::Version
@@ -22,6 +24,7 @@ dependencies:
22
24
  type: :development
23
25
  prerelease: false
24
26
  version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
25
28
  requirements:
26
29
  - - ~>
27
30
  - !ruby/object:Gem::Version
@@ -41,11 +44,12 @@ files:
41
44
  - DESIGN.textile
42
45
  - MIT-LICENSE
43
46
  - lib/active_model/array_serializer.rb
44
- - lib/active_model/as_json_overrides.rb
45
47
  - lib/active_model/default_serializer.rb
46
48
  - lib/active_model/serializable.rb
47
49
  - lib/active_model/serializer/associations.rb
48
50
  - lib/active_model/serializer/config.rb
51
+ - lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb
52
+ - lib/active_model/serializer/generators/serializer/templates/controller.rb
49
53
  - lib/active_model/serializer/railtie.rb
50
54
  - lib/active_model/serializer/version.rb
51
55
  - lib/active_model/serializer.rb
@@ -70,29 +74,29 @@ files:
70
74
  - test/unit/active_model/serializer/meta_test.rb
71
75
  - test/unit/active_model/serializer/root_test.rb
72
76
  - test/unit/active_model/serializer/scope_test.rb
73
- homepage: https://github.com/fivetanley/active_model_serializers_rails/tree/rails-2.3
74
- licenses:
75
- - MIT
76
- metadata: {}
77
+ homepage: https://github.com/rails-api/active_model_serializers
78
+ licenses: []
77
79
  post_install_message:
78
80
  rdoc_options: []
79
81
  require_paths:
80
82
  - lib
81
83
  required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
82
85
  requirements:
83
- - - '>='
86
+ - - ! '>='
84
87
  - !ruby/object:Gem::Version
85
88
  version: 1.9.3
86
89
  required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
87
91
  requirements:
88
- - - '>'
92
+ - - ! '>'
89
93
  - !ruby/object:Gem::Version
90
94
  version: 1.3.1
91
95
  requirements: []
92
96
  rubyforge_project:
93
- rubygems_version: 2.0.3
97
+ rubygems_version: 1.8.23
94
98
  signing_key:
95
- specification_version: 4
99
+ specification_version: 3
96
100
  summary: Bringing consistency and object orientation to model serialization. Works
97
101
  great for client-side MVC frameworks!
98
102
  test_files:
@@ -115,3 +119,4 @@ test_files:
115
119
  - test/unit/active_model/serializer/meta_test.rb
116
120
  - test/unit/active_model/serializer/root_test.rb
117
121
  - test/unit/active_model/serializer/scope_test.rb
122
+ has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 0bf1627e3e77f67d91a472d7973d66c3a8ca726b
4
- data.tar.gz: 905a98aa09e0e84a9ae4b0931f55d39fe1e0b8cd
5
- SHA512:
6
- metadata.gz: 3984baa7ec037bd7e4faf376127623bafac0b8de7fbb08f48e1effab5240968bce85a217104be9c55ad84204f170cc27860aa53b627a7a9eb8d034222a0b9048
7
- data.tar.gz: c4607f4816f99fd7d913a881937d0a6814482376e404877bd71bcc1db494b395058a70cb7a177f0fb92774ec56fef586db293cb830cebd9060c518f8dbb5b35c
@@ -1,6 +0,0 @@
1
- class Struct
2
- def as_json(options = nil)
3
- Hash[members.zip(values)]
4
- end
5
- end
6
-