autobots 0.0.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.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +15 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +142 -0
  7. data/Rakefile +13 -0
  8. data/autobots.gemspec +28 -0
  9. data/lib/autobots.rb +9 -0
  10. data/lib/autobots/assembler.rb +35 -0
  11. data/lib/autobots/helpers.rb +6 -0
  12. data/lib/autobots/helpers/active_record_preloading.rb +18 -0
  13. data/lib/autobots/helpers/caching.rb +38 -0
  14. data/lib/autobots/version.rb +3 -0
  15. data/test/active_record_test.rb +66 -0
  16. data/test/basic_test.rb +22 -0
  17. data/test/caching_test.rb +27 -0
  18. data/test/dummy/README.rdoc +261 -0
  19. data/test/dummy/Rakefile +7 -0
  20. data/test/dummy/app/assets/javascripts/application.js +15 -0
  21. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  22. data/test/dummy/app/controllers/application_controller.rb +3 -0
  23. data/test/dummy/app/helpers/application_helper.rb +2 -0
  24. data/test/dummy/app/mailers/.gitkeep +0 -0
  25. data/test/dummy/app/models/.gitkeep +0 -0
  26. data/test/dummy/app/models/comment.rb +5 -0
  27. data/test/dummy/app/models/issue.rb +6 -0
  28. data/test/dummy/app/models/project.rb +5 -0
  29. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  30. data/test/dummy/config.ru +4 -0
  31. data/test/dummy/config/application.rb +53 -0
  32. data/test/dummy/config/boot.rb +10 -0
  33. data/test/dummy/config/database.yml +25 -0
  34. data/test/dummy/config/environment.rb +5 -0
  35. data/test/dummy/config/environments/development.rb +33 -0
  36. data/test/dummy/config/environments/production.rb +69 -0
  37. data/test/dummy/config/environments/test.rb +33 -0
  38. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  39. data/test/dummy/config/initializers/inflections.rb +15 -0
  40. data/test/dummy/config/initializers/mime_types.rb +5 -0
  41. data/test/dummy/config/initializers/secret_token.rb +7 -0
  42. data/test/dummy/config/initializers/session_store.rb +8 -0
  43. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  44. data/test/dummy/config/locales/en.yml +5 -0
  45. data/test/dummy/config/routes.rb +58 -0
  46. data/test/dummy/db/migrate/20141119222556_schema.rb +19 -0
  47. data/test/dummy/lib/assets/.gitkeep +0 -0
  48. data/test/dummy/log/.gitkeep +0 -0
  49. data/test/dummy/public/404.html +26 -0
  50. data/test/dummy/public/422.html +26 -0
  51. data/test/dummy/public/500.html +25 -0
  52. data/test/dummy/public/favicon.ico +0 -0
  53. data/test/dummy/script/rails +6 -0
  54. data/test/dummy/test/fixtures/comments.yml +14 -0
  55. data/test/dummy/test/fixtures/issues.yml +9 -0
  56. data/test/dummy/test/fixtures/projects.yml +5 -0
  57. data/test/test_helper.rb +44 -0
  58. data/test/test_models.rb +73 -0
  59. metadata +232 -0
@@ -0,0 +1,9 @@
1
+ load:
2
+ project: main
3
+ title: Page doesn't load
4
+ body: Homepage fails to render in IE6
5
+
6
+ css:
7
+ project: main
8
+ title: Links don't appear on some pages
9
+ body: Other things overlap on them
@@ -0,0 +1,5 @@
1
+ main:
2
+ name: Main Project
3
+
4
+ side:
5
+ name: Side Project
@@ -0,0 +1,44 @@
1
+ ENV['RAILS_ENV'] = 'test'
2
+
3
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
+ require "rails/test_help"
5
+ require 'pp'
6
+
7
+ require 'test_models'
8
+
9
+ Rails.backtrace_cleaner.remove_silencers!
10
+
11
+ ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
12
+
13
+ # Load fixtures from the engine
14
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
15
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
16
+ end
17
+
18
+ class QueryCounter
19
+ class << self
20
+ attr_accessor :count
21
+ def clear!
22
+ @count = 0
23
+ end
24
+ def increment!
25
+ @count += 1
26
+ end
27
+ end
28
+ self.count = 0
29
+ end
30
+
31
+ ActiveSupport::Notifications.subscribe('sql.active_record') do |_, _, _, _, payload|
32
+ sql = payload[:sql]
33
+ unless sql =~ /transaction/
34
+ QueryCounter.increment!
35
+ end
36
+ end
37
+
38
+ ActiveSupport::TestCase.class_eval do
39
+ def assert_queries(count = 1)
40
+ QueryCounter.clear!
41
+ yield
42
+ assert_equal count, QueryCounter.count, "expected to have #{count} sql queries"
43
+ end
44
+ end
@@ -0,0 +1,73 @@
1
+ ###########################
2
+ # ActiveRecord examples
3
+ ###########################
4
+ class ProjectSerializer < ActiveModel::Serializer
5
+ attributes :id, :name
6
+ has_many :issues
7
+ end
8
+
9
+ class IssueSerializer < ActiveModel::Serializer
10
+ attributes :id, :title, :body
11
+ has_many :comments
12
+ end
13
+
14
+ class CommentSerializer < ActiveModel::Serializer
15
+ attributes :id, :title, :body
16
+ end
17
+
18
+ class ProjectAssembler < Autobots::Assembler
19
+ self.serializer = ProjectSerializer
20
+ end
21
+
22
+ class ProjectPreloadAssembler < Autobots::Assembler
23
+ self.serializer = ProjectSerializer
24
+
25
+ def transform(objects)
26
+ ActiveRecord::Associations::Preloader.new(objects, {issues: :comments}).run
27
+ objects
28
+ rescue ArgumentError
29
+ ActiveRecord::Associations::Preloader.new.preload(objects, {issues: :comments})
30
+ objects
31
+ end
32
+ end
33
+
34
+ class ProjectPreloadIncludedAssembler < Autobots::Assembler
35
+ self.serializer = ProjectSerializer
36
+ include Autobots::Helpers::ActiveRecordPreloading
37
+
38
+ def preloads
39
+ {issues: :comments}
40
+ end
41
+ end
42
+
43
+ class ProjectIdAssembler < Autobots::Assembler
44
+ self.serializer = ProjectSerializer
45
+ def assemble(identifiers)
46
+ Project.where(id: identifiers).to_a
47
+ end
48
+ end
49
+
50
+ ###########################
51
+ # ActiveModel examples
52
+ ###########################
53
+ class BasicModelSerializer < ActiveModel::Serializer
54
+
55
+ attributes :id, :name
56
+ has_many :bars
57
+
58
+ end
59
+
60
+ class BasicModelAssembler < Autobots::Assembler
61
+ self.serializer = BasicModelSerializer
62
+ end
63
+
64
+ class BasicModel
65
+ include ActiveModel::Model
66
+ include ActiveModel::SerializerSupport
67
+
68
+ attr_accessor :id, :name
69
+
70
+ def bars
71
+ []
72
+ end
73
+ end
metadata ADDED
@@ -0,0 +1,232 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: autobots
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeff Ching
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bulk_cache_fetcher
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: active_model_serializers
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.8.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sqlite3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Loading and serializing models in bulk with caching
98
+ email:
99
+ - jching@avvo.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".travis.yml"
106
+ - Gemfile
107
+ - LICENSE.txt
108
+ - README.md
109
+ - Rakefile
110
+ - autobots.gemspec
111
+ - lib/autobots.rb
112
+ - lib/autobots/assembler.rb
113
+ - lib/autobots/helpers.rb
114
+ - lib/autobots/helpers/active_record_preloading.rb
115
+ - lib/autobots/helpers/caching.rb
116
+ - lib/autobots/version.rb
117
+ - test/active_record_test.rb
118
+ - test/basic_test.rb
119
+ - test/caching_test.rb
120
+ - test/dummy/README.rdoc
121
+ - test/dummy/Rakefile
122
+ - test/dummy/app/assets/javascripts/application.js
123
+ - test/dummy/app/assets/stylesheets/application.css
124
+ - test/dummy/app/controllers/application_controller.rb
125
+ - test/dummy/app/helpers/application_helper.rb
126
+ - test/dummy/app/mailers/.gitkeep
127
+ - test/dummy/app/models/.gitkeep
128
+ - test/dummy/app/models/comment.rb
129
+ - test/dummy/app/models/issue.rb
130
+ - test/dummy/app/models/project.rb
131
+ - test/dummy/app/views/layouts/application.html.erb
132
+ - test/dummy/config.ru
133
+ - test/dummy/config/application.rb
134
+ - test/dummy/config/boot.rb
135
+ - test/dummy/config/database.yml
136
+ - test/dummy/config/environment.rb
137
+ - test/dummy/config/environments/development.rb
138
+ - test/dummy/config/environments/production.rb
139
+ - test/dummy/config/environments/test.rb
140
+ - test/dummy/config/initializers/backtrace_silencers.rb
141
+ - test/dummy/config/initializers/inflections.rb
142
+ - test/dummy/config/initializers/mime_types.rb
143
+ - test/dummy/config/initializers/secret_token.rb
144
+ - test/dummy/config/initializers/session_store.rb
145
+ - test/dummy/config/initializers/wrap_parameters.rb
146
+ - test/dummy/config/locales/en.yml
147
+ - test/dummy/config/routes.rb
148
+ - test/dummy/db/migrate/20141119222556_schema.rb
149
+ - test/dummy/lib/assets/.gitkeep
150
+ - test/dummy/log/.gitkeep
151
+ - test/dummy/log/development.log
152
+ - test/dummy/public/404.html
153
+ - test/dummy/public/422.html
154
+ - test/dummy/public/500.html
155
+ - test/dummy/public/favicon.ico
156
+ - test/dummy/script/rails
157
+ - test/dummy/test/fixtures/comments.yml
158
+ - test/dummy/test/fixtures/issues.yml
159
+ - test/dummy/test/fixtures/projects.yml
160
+ - test/test_helper.rb
161
+ - test/test_models.rb
162
+ homepage: ''
163
+ licenses:
164
+ - MIT
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ requirements: []
181
+ rubyforge_project:
182
+ rubygems_version: 2.2.2
183
+ signing_key:
184
+ specification_version: 4
185
+ summary: Loading and serializing models
186
+ test_files:
187
+ - test/active_record_test.rb
188
+ - test/basic_test.rb
189
+ - test/caching_test.rb
190
+ - test/dummy/README.rdoc
191
+ - test/dummy/Rakefile
192
+ - test/dummy/app/assets/javascripts/application.js
193
+ - test/dummy/app/assets/stylesheets/application.css
194
+ - test/dummy/app/controllers/application_controller.rb
195
+ - test/dummy/app/helpers/application_helper.rb
196
+ - test/dummy/app/mailers/.gitkeep
197
+ - test/dummy/app/models/.gitkeep
198
+ - test/dummy/app/models/comment.rb
199
+ - test/dummy/app/models/issue.rb
200
+ - test/dummy/app/models/project.rb
201
+ - test/dummy/app/views/layouts/application.html.erb
202
+ - test/dummy/config.ru
203
+ - test/dummy/config/application.rb
204
+ - test/dummy/config/boot.rb
205
+ - test/dummy/config/database.yml
206
+ - test/dummy/config/environment.rb
207
+ - test/dummy/config/environments/development.rb
208
+ - test/dummy/config/environments/production.rb
209
+ - test/dummy/config/environments/test.rb
210
+ - test/dummy/config/initializers/backtrace_silencers.rb
211
+ - test/dummy/config/initializers/inflections.rb
212
+ - test/dummy/config/initializers/mime_types.rb
213
+ - test/dummy/config/initializers/secret_token.rb
214
+ - test/dummy/config/initializers/session_store.rb
215
+ - test/dummy/config/initializers/wrap_parameters.rb
216
+ - test/dummy/config/locales/en.yml
217
+ - test/dummy/config/routes.rb
218
+ - test/dummy/db/migrate/20141119222556_schema.rb
219
+ - test/dummy/lib/assets/.gitkeep
220
+ - test/dummy/log/.gitkeep
221
+ - test/dummy/log/development.log
222
+ - test/dummy/public/404.html
223
+ - test/dummy/public/422.html
224
+ - test/dummy/public/500.html
225
+ - test/dummy/public/favicon.ico
226
+ - test/dummy/script/rails
227
+ - test/dummy/test/fixtures/comments.yml
228
+ - test/dummy/test/fixtures/issues.yml
229
+ - test/dummy/test/fixtures/projects.yml
230
+ - test/test_helper.rb
231
+ - test/test_models.rb
232
+ has_rdoc: