active_model_serializers 0.8.3 → 0.9.4

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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +122 -5
  3. data/CONTRIBUTING.md +20 -0
  4. data/DESIGN.textile +4 -4
  5. data/{MIT-LICENSE.txt → MIT-LICENSE} +0 -0
  6. data/README.md +396 -95
  7. data/lib/action_controller/serialization.rb +50 -12
  8. data/lib/action_controller/serialization_test_case.rb +79 -0
  9. data/lib/active_model/array_serializer.rb +47 -78
  10. data/lib/active_model/default_serializer.rb +32 -0
  11. data/lib/active_model/serializable/utils.rb +16 -0
  12. data/lib/active_model/serializable.rb +62 -0
  13. data/lib/active_model/serializer/association/has_many.rb +39 -0
  14. data/lib/active_model/serializer/association/has_one.rb +25 -0
  15. data/lib/active_model/serializer/association.rb +58 -0
  16. data/lib/active_model/serializer/config.rb +31 -0
  17. data/lib/active_model/serializer/generators/resource_override.rb +13 -0
  18. data/lib/{generators → active_model/serializer/generators}/serializer/USAGE +0 -0
  19. data/lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb +14 -0
  20. data/lib/active_model/serializer/generators/serializer/serializer_generator.rb +37 -0
  21. data/lib/active_model/serializer/generators/serializer/templates/controller.rb +93 -0
  22. data/lib/active_model/serializer/generators/serializer/templates/serializer.rb +8 -0
  23. data/lib/active_model/serializer/railtie.rb +18 -0
  24. data/lib/active_model/{serializers → serializer}/version.rb +1 -1
  25. data/lib/active_model/serializer.rb +214 -423
  26. data/lib/active_model/serializer_support.rb +5 -0
  27. data/lib/active_model_serializers/mime_types.rb +14 -0
  28. data/lib/active_model_serializers.rb +12 -87
  29. data/test/fixtures/active_record.rb +96 -0
  30. data/test/fixtures/poro.rb +187 -0
  31. data/test/fixtures/template.html.erb +1 -0
  32. data/test/integration/action_controller/namespaced_serialization_test.rb +105 -0
  33. data/test/integration/action_controller/serialization_test.rb +287 -0
  34. data/test/integration/action_controller/serialization_test_case_test.rb +71 -0
  35. data/test/integration/active_record/active_record_test.rb +94 -0
  36. data/test/integration/generators/resource_generator_test.rb +26 -0
  37. data/test/integration/generators/scaffold_controller_generator_test.rb +64 -0
  38. data/test/integration/generators/serializer_generator_test.rb +41 -0
  39. data/test/test_app.rb +14 -0
  40. data/test/test_helper.rb +10 -18
  41. data/test/unit/active_model/array_serializer/except_test.rb +18 -0
  42. data/test/unit/active_model/array_serializer/key_format_test.rb +18 -0
  43. data/test/unit/active_model/array_serializer/meta_test.rb +53 -0
  44. data/test/unit/active_model/array_serializer/only_test.rb +18 -0
  45. data/test/unit/active_model/array_serializer/options_test.rb +16 -0
  46. data/test/unit/active_model/array_serializer/root_test.rb +102 -0
  47. data/test/unit/active_model/array_serializer/scope_test.rb +24 -0
  48. data/test/unit/active_model/array_serializer/serialization_test.rb +216 -0
  49. data/test/unit/active_model/default_serializer_test.rb +13 -0
  50. data/test/unit/active_model/serializer/associations/build_serializer_test.rb +36 -0
  51. data/test/unit/active_model/serializer/associations_test.rb +19 -0
  52. data/test/unit/active_model/serializer/attributes_test.rb +57 -0
  53. data/test/unit/active_model/serializer/config_test.rb +91 -0
  54. data/test/unit/active_model/serializer/filter_test.rb +69 -0
  55. data/test/unit/active_model/serializer/has_many_polymorphic_test.rb +189 -0
  56. data/test/unit/active_model/serializer/has_many_test.rb +265 -0
  57. data/test/unit/active_model/serializer/has_one_and_has_many_test.rb +27 -0
  58. data/test/unit/active_model/serializer/has_one_polymorphic_test.rb +196 -0
  59. data/test/unit/active_model/serializer/has_one_test.rb +253 -0
  60. data/test/unit/active_model/serializer/key_format_test.rb +25 -0
  61. data/test/unit/active_model/serializer/meta_test.rb +39 -0
  62. data/test/unit/active_model/serializer/options_test.rb +42 -0
  63. data/test/unit/active_model/serializer/root_test.rb +117 -0
  64. data/test/unit/active_model/serializer/scope_test.rb +49 -0
  65. data/test/unit/active_model/serializer/url_helpers_test.rb +35 -0
  66. metadata +107 -64
  67. data/.gitignore +0 -18
  68. data/.travis.yml +0 -28
  69. data/Gemfile +0 -4
  70. data/Gemfile.edge +0 -9
  71. data/Rakefile +0 -18
  72. data/active_model_serializers.gemspec +0 -24
  73. data/bench/perf.rb +0 -43
  74. data/cruft.md +0 -19
  75. data/lib/active_model/serializer/associations.rb +0 -233
  76. data/lib/active_record/serializer_override.rb +0 -16
  77. data/lib/generators/resource_override.rb +0 -13
  78. data/lib/generators/serializer/serializer_generator.rb +0 -42
  79. data/lib/generators/serializer/templates/serializer.rb +0 -19
  80. data/test/array_serializer_test.rb +0 -75
  81. data/test/association_test.rb +0 -592
  82. data/test/caching_test.rb +0 -96
  83. data/test/generators_test.rb +0 -85
  84. data/test/no_serialization_scope_test.rb +0 -34
  85. data/test/serialization_scope_name_test.rb +0 -67
  86. data/test/serialization_test.rb +0 -392
  87. data/test/serializer_support_test.rb +0 -51
  88. data/test/serializer_test.rb +0 -1465
  89. data/test/test_fakes.rb +0 -217
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class ScopeTest < Minitest::Test
6
+ def setup
7
+ @serializer = ProfileSerializer.new(nil, scope: current_user)
8
+ end
9
+
10
+ def test_scope
11
+ assert_equal('user', @serializer.scope)
12
+ end
13
+
14
+ private
15
+
16
+ def current_user
17
+ 'user'
18
+ end
19
+ end
20
+
21
+ class NestedScopeTest < Minitest::Test
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_from_options = Class.new(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
+
48
+ end
49
+ end
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class UrlHelpersTest < Minitest::Test
6
+ include Rails.application.routes.url_helpers
7
+
8
+ def setup
9
+ Object.const_set 'UserController', Class.new(ActionController::Base) do
10
+ def show
11
+ render text: 'profile'
12
+ end
13
+ end
14
+
15
+ Rails.application.routes.draw do
16
+ get '/profile/:id', as: :profile, controller: :user, action: :show
17
+ end
18
+ end
19
+
20
+ def test_url_helpers_are_available
21
+ serializer = Class.new(ActiveModel::Serializer) do
22
+ attributes :url
23
+
24
+ def url
25
+ profile_url(id: object.object_id)
26
+ end
27
+ end
28
+ profile = Profile.new
29
+
30
+ assert_equal({ url: profile_url(id: profile.object_id) },
31
+ serializer.new(profile).as_json)
32
+ end
33
+ end
34
+ end
35
+ end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
8
8
  - Yehuda Katz
9
+ - Santiago Pastorino
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-12-10 00:00:00.000000000 Z
13
+ date: 2016-01-05 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: activemodel
@@ -17,100 +18,104 @@ dependencies:
17
18
  requirements:
18
19
  - - ">="
19
20
  - !ruby/object:Gem::Version
20
- version: '3.0'
21
+ version: '3.2'
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
27
- version: '3.0'
28
+ version: '3.2'
28
29
  - !ruby/object:Gem::Dependency
29
30
  name: rails
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
33
  - - ">="
33
34
  - !ruby/object:Gem::Version
34
- version: '3.0'
35
+ version: '3.2'
35
36
  type: :development
36
37
  prerelease: false
37
38
  version_requirements: !ruby/object:Gem::Requirement
38
39
  requirements:
39
40
  - - ">="
40
41
  - !ruby/object:Gem::Version
41
- version: '3.0'
42
- - !ruby/object:Gem::Dependency
43
- name: pry
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
- - !ruby/object:Gem::Dependency
57
- name: minitest
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: '0'
42
+ version: '3.2'
70
43
  description: Making it easy to serialize models for client-side use
71
44
  email:
72
45
  - jose.valim@gmail.com
73
46
  - wycats@gmail.com
47
+ - santiago@wyeworks.com
74
48
  executables: []
75
49
  extensions: []
76
50
  extra_rdoc_files: []
77
51
  files:
78
- - ".gitignore"
79
- - ".travis.yml"
80
52
  - CHANGELOG.md
53
+ - CONTRIBUTING.md
81
54
  - DESIGN.textile
82
- - Gemfile
83
- - Gemfile.edge
84
- - MIT-LICENSE.txt
55
+ - MIT-LICENSE
85
56
  - README.md
86
- - Rakefile
87
- - active_model_serializers.gemspec
88
- - bench/perf.rb
89
- - cruft.md
90
57
  - lib/action_controller/serialization.rb
58
+ - lib/action_controller/serialization_test_case.rb
91
59
  - lib/active_model/array_serializer.rb
60
+ - lib/active_model/default_serializer.rb
61
+ - lib/active_model/serializable.rb
62
+ - lib/active_model/serializable/utils.rb
92
63
  - lib/active_model/serializer.rb
93
- - lib/active_model/serializer/associations.rb
94
- - lib/active_model/serializers/version.rb
64
+ - lib/active_model/serializer/association.rb
65
+ - lib/active_model/serializer/association/has_many.rb
66
+ - lib/active_model/serializer/association/has_one.rb
67
+ - lib/active_model/serializer/config.rb
68
+ - lib/active_model/serializer/generators/resource_override.rb
69
+ - lib/active_model/serializer/generators/serializer/USAGE
70
+ - lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb
71
+ - lib/active_model/serializer/generators/serializer/serializer_generator.rb
72
+ - lib/active_model/serializer/generators/serializer/templates/controller.rb
73
+ - lib/active_model/serializer/generators/serializer/templates/serializer.rb
74
+ - lib/active_model/serializer/railtie.rb
75
+ - lib/active_model/serializer/version.rb
76
+ - lib/active_model/serializer_support.rb
95
77
  - lib/active_model_serializers.rb
96
- - lib/active_record/serializer_override.rb
97
- - lib/generators/resource_override.rb
98
- - lib/generators/serializer/USAGE
99
- - lib/generators/serializer/serializer_generator.rb
100
- - lib/generators/serializer/templates/serializer.rb
101
- - test/array_serializer_test.rb
102
- - test/association_test.rb
103
- - test/caching_test.rb
104
- - test/generators_test.rb
105
- - test/no_serialization_scope_test.rb
106
- - test/serialization_scope_name_test.rb
107
- - test/serialization_test.rb
108
- - test/serializer_support_test.rb
109
- - test/serializer_test.rb
110
- - test/test_fakes.rb
78
+ - lib/active_model_serializers/mime_types.rb
79
+ - test/fixtures/active_record.rb
80
+ - test/fixtures/poro.rb
81
+ - test/fixtures/template.html.erb
82
+ - test/integration/action_controller/namespaced_serialization_test.rb
83
+ - test/integration/action_controller/serialization_test.rb
84
+ - test/integration/action_controller/serialization_test_case_test.rb
85
+ - test/integration/active_record/active_record_test.rb
86
+ - test/integration/generators/resource_generator_test.rb
87
+ - test/integration/generators/scaffold_controller_generator_test.rb
88
+ - test/integration/generators/serializer_generator_test.rb
89
+ - test/test_app.rb
111
90
  - test/test_helper.rb
91
+ - test/unit/active_model/array_serializer/except_test.rb
92
+ - test/unit/active_model/array_serializer/key_format_test.rb
93
+ - test/unit/active_model/array_serializer/meta_test.rb
94
+ - test/unit/active_model/array_serializer/only_test.rb
95
+ - test/unit/active_model/array_serializer/options_test.rb
96
+ - test/unit/active_model/array_serializer/root_test.rb
97
+ - test/unit/active_model/array_serializer/scope_test.rb
98
+ - test/unit/active_model/array_serializer/serialization_test.rb
99
+ - test/unit/active_model/default_serializer_test.rb
100
+ - test/unit/active_model/serializer/associations/build_serializer_test.rb
101
+ - test/unit/active_model/serializer/associations_test.rb
102
+ - test/unit/active_model/serializer/attributes_test.rb
103
+ - test/unit/active_model/serializer/config_test.rb
104
+ - test/unit/active_model/serializer/filter_test.rb
105
+ - test/unit/active_model/serializer/has_many_polymorphic_test.rb
106
+ - test/unit/active_model/serializer/has_many_test.rb
107
+ - test/unit/active_model/serializer/has_one_and_has_many_test.rb
108
+ - test/unit/active_model/serializer/has_one_polymorphic_test.rb
109
+ - test/unit/active_model/serializer/has_one_test.rb
110
+ - test/unit/active_model/serializer/key_format_test.rb
111
+ - test/unit/active_model/serializer/meta_test.rb
112
+ - test/unit/active_model/serializer/options_test.rb
113
+ - test/unit/active_model/serializer/root_test.rb
114
+ - test/unit/active_model/serializer/scope_test.rb
115
+ - test/unit/active_model/serializer/url_helpers_test.rb
112
116
  homepage: https://github.com/rails-api/active_model_serializers
113
- licenses: []
117
+ licenses:
118
+ - MIT
114
119
  metadata: {}
115
120
  post_install_message:
116
121
  rdoc_options: []
@@ -120,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
125
  requirements:
121
126
  - - ">="
122
127
  - !ruby/object:Gem::Version
123
- version: '0'
128
+ version: 1.9.3
124
129
  required_rubygems_version: !ruby/object:Gem::Requirement
125
130
  requirements:
126
131
  - - ">="
@@ -128,9 +133,47 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
133
  version: '0'
129
134
  requirements: []
130
135
  rubyforge_project:
131
- rubygems_version: 2.2.2
136
+ rubygems_version: 2.4.8
132
137
  signing_key:
133
138
  specification_version: 4
134
139
  summary: Bringing consistency and object orientation to model serialization. Works
135
140
  great for client-side MVC frameworks!
136
- test_files: []
141
+ test_files:
142
+ - test/fixtures/active_record.rb
143
+ - test/fixtures/poro.rb
144
+ - test/fixtures/template.html.erb
145
+ - test/integration/action_controller/namespaced_serialization_test.rb
146
+ - test/integration/action_controller/serialization_test.rb
147
+ - test/integration/action_controller/serialization_test_case_test.rb
148
+ - test/integration/active_record/active_record_test.rb
149
+ - test/integration/generators/resource_generator_test.rb
150
+ - test/integration/generators/scaffold_controller_generator_test.rb
151
+ - test/integration/generators/serializer_generator_test.rb
152
+ - test/test_app.rb
153
+ - test/test_helper.rb
154
+ - test/unit/active_model/array_serializer/except_test.rb
155
+ - test/unit/active_model/array_serializer/key_format_test.rb
156
+ - test/unit/active_model/array_serializer/meta_test.rb
157
+ - test/unit/active_model/array_serializer/only_test.rb
158
+ - test/unit/active_model/array_serializer/options_test.rb
159
+ - test/unit/active_model/array_serializer/root_test.rb
160
+ - test/unit/active_model/array_serializer/scope_test.rb
161
+ - test/unit/active_model/array_serializer/serialization_test.rb
162
+ - test/unit/active_model/default_serializer_test.rb
163
+ - test/unit/active_model/serializer/associations/build_serializer_test.rb
164
+ - test/unit/active_model/serializer/associations_test.rb
165
+ - test/unit/active_model/serializer/attributes_test.rb
166
+ - test/unit/active_model/serializer/config_test.rb
167
+ - test/unit/active_model/serializer/filter_test.rb
168
+ - test/unit/active_model/serializer/has_many_polymorphic_test.rb
169
+ - test/unit/active_model/serializer/has_many_test.rb
170
+ - test/unit/active_model/serializer/has_one_and_has_many_test.rb
171
+ - test/unit/active_model/serializer/has_one_polymorphic_test.rb
172
+ - test/unit/active_model/serializer/has_one_test.rb
173
+ - test/unit/active_model/serializer/key_format_test.rb
174
+ - test/unit/active_model/serializer/meta_test.rb
175
+ - test/unit/active_model/serializer/options_test.rb
176
+ - test/unit/active_model/serializer/root_test.rb
177
+ - test/unit/active_model/serializer/scope_test.rb
178
+ - test/unit/active_model/serializer/url_helpers_test.rb
179
+ has_rdoc:
data/.gitignore DELETED
@@ -1,18 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- *.swp
data/.travis.yml DELETED
@@ -1,28 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 1.8.7
4
- - 1.9.2
5
- - 1.9.3
6
- - 2.0.0
7
- - ree
8
- - jruby-18mode
9
- - jruby-19mode
10
- - rbx-2
11
- gemfile:
12
- - Gemfile
13
- - Gemfile.edge
14
- matrix:
15
- allow_failures:
16
- - gemfile: Gemfile.edge
17
- exclude:
18
- # Edge Rails is only compatible with 1.9.3
19
- - gemfile: Gemfile.edge
20
- rvm: 1.8.7
21
- - gemfile: Gemfile.edge
22
- rvm: 1.9.2
23
- - gemfile: Gemfile.edge
24
- rvm: ree
25
- - gemfile: Gemfile.edge
26
- rvm: jruby-18mode
27
- - gemfile: Gemfile.edge
28
- rvm: rbx-18mode
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify gem dependencies in active_model_serializers.gemspec
4
- gemspec
data/Gemfile.edge DELETED
@@ -1,9 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gemspec
4
-
5
- gem 'rails', github: 'rails/rails'
6
-
7
- # Current dependencies of edge rails
8
- gem 'journey', github: 'rails/journey'
9
- gem 'activerecord-deprecated_finders' , github: 'rails/activerecord-deprecated_finders'
data/Rakefile DELETED
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
3
- require "rake/testtask"
4
-
5
- desc 'Run tests'
6
- Rake::TestTask.new(:test) do |t|
7
- t.libs << 'lib'
8
- t.libs << 'test'
9
- t.pattern = 'test/**/*_test.rb'
10
- t.verbose = true
11
- end
12
-
13
- desc 'Benchmark'
14
- task :bench do
15
- load 'bench/perf.rb'
16
- end
17
-
18
- task :default => :test
@@ -1,24 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- $:.unshift File.expand_path("../lib", __FILE__)
4
- require "active_model/serializers/version"
5
-
6
- Gem::Specification.new do |gem|
7
- gem.authors = ["José Valim", "Yehuda Katz"]
8
- gem.email = ["jose.valim@gmail.com", "wycats@gmail.com"]
9
- gem.description = %q{Making it easy to serialize models for client-side use}
10
- gem.summary = %q{Bringing consistency and object orientation to model serialization. Works great for client-side MVC frameworks!}
11
- gem.homepage = "https://github.com/rails-api/active_model_serializers"
12
-
13
- gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
14
- gem.files = `git ls-files`.split("\n")
15
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- gem.name = "active_model_serializers"
17
- gem.require_paths = ["lib"]
18
- gem.version = ActiveModel::Serializer::VERSION
19
-
20
- gem.add_dependency 'activemodel', '>= 3.0'
21
- gem.add_development_dependency "rails", ">= 3.0"
22
- gem.add_development_dependency "pry"
23
- gem.add_development_dependency "minitest"
24
- end
data/bench/perf.rb DELETED
@@ -1,43 +0,0 @@
1
- require "rubygems"
2
- require "bundler/setup"
3
- require "active_model_serializers"
4
- require "active_support/json"
5
- require "benchmark"
6
-
7
- class User < Struct.new(:id,:name,:age,:about)
8
- include ActiveModel::SerializerSupport
9
-
10
- def fast_hash
11
- h = {
12
- id: read_attribute_for_serialization(:id),
13
- name: read_attribute_for_serialization(:name),
14
- about: read_attribute_for_serialization(:about)
15
- }
16
- h[:age] = read_attribute_for_serialization(:age) if age > 18
17
- h
18
- end
19
- end
20
-
21
- class UserSerializer < ActiveModel::Serializer
22
- attributes :id, :name, :age, :about
23
-
24
- def include_age?
25
- object.age > 18
26
- end
27
- end
28
-
29
-
30
-
31
- u = User.new(1, "sam", 10, "about")
32
- s = UserSerializer.new(u)
33
-
34
- n = 100000
35
-
36
- Benchmark.bmbm {|x|
37
- x.report("init") { n.times { UserSerializer.new(u) } }
38
- x.report("fast_hash") { n.times { u.fast_hash } }
39
- x.report("attributes") { n.times { UserSerializer.new(u).attributes } }
40
- x.report("serializable_hash") { n.times { UserSerializer.new(u).serializable_hash } }
41
- }
42
-
43
-
data/cruft.md DELETED
@@ -1,19 +0,0 @@
1
- As of Ruby 1.9.3, it is impossible to dynamically generate a Symbol
2
- through interpolation without generating garbage. Theoretically, Ruby
3
- should be able to take care of this by building up the String in C and
4
- interning the C String.
5
-
6
- Because of this, we avoid generating dynamic Symbols at runtime. For
7
- example, instead of generating the instrumentation event dynamically, we
8
- have a constant with a Hash of events:
9
-
10
- ```ruby
11
- INSTRUMENT = {
12
- :serialize => :"serialize.serializer",
13
- :associations => :"associations.serializer"
14
- }
15
- ```
16
-
17
- If Ruby ever fixes this issue and avoids generating garbage with dynamic
18
- symbols, this code can be removed.
19
-