render_sync 0.5.0

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 (107) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +153 -0
  3. data/Gemfile +3 -0
  4. data/LICENSE +22 -0
  5. data/README.md +521 -0
  6. data/Rakefile +9 -0
  7. data/app/assets/javascripts/sync.coffee +355 -0
  8. data/app/controllers/sync/refetches_controller.rb +56 -0
  9. data/app/helpers/render_sync/config_helper.rb +15 -0
  10. data/config/routes.rb +3 -0
  11. data/config/sync.yml +21 -0
  12. data/lib/generators/render_sync/install_generator.rb +14 -0
  13. data/lib/generators/render_sync/templates/sync.ru +14 -0
  14. data/lib/generators/render_sync/templates/sync.yml +34 -0
  15. data/lib/render_sync.rb +174 -0
  16. data/lib/render_sync/action.rb +39 -0
  17. data/lib/render_sync/actions.rb +114 -0
  18. data/lib/render_sync/channel.rb +23 -0
  19. data/lib/render_sync/clients/dummy.rb +22 -0
  20. data/lib/render_sync/clients/faye.rb +104 -0
  21. data/lib/render_sync/clients/pusher.rb +77 -0
  22. data/lib/render_sync/controller_helpers.rb +33 -0
  23. data/lib/render_sync/engine.rb +24 -0
  24. data/lib/render_sync/erb_tracker.rb +49 -0
  25. data/lib/render_sync/faye_extension.rb +45 -0
  26. data/lib/render_sync/model.rb +174 -0
  27. data/lib/render_sync/model_actions.rb +60 -0
  28. data/lib/render_sync/model_change_tracking.rb +97 -0
  29. data/lib/render_sync/model_syncing.rb +65 -0
  30. data/lib/render_sync/model_touching.rb +35 -0
  31. data/lib/render_sync/partial.rb +112 -0
  32. data/lib/render_sync/partial_creator.rb +47 -0
  33. data/lib/render_sync/reactor.rb +48 -0
  34. data/lib/render_sync/refetch_model.rb +21 -0
  35. data/lib/render_sync/refetch_partial.rb +43 -0
  36. data/lib/render_sync/refetch_partial_creator.rb +21 -0
  37. data/lib/render_sync/renderer.rb +19 -0
  38. data/lib/render_sync/resource.rb +115 -0
  39. data/lib/render_sync/scope.rb +113 -0
  40. data/lib/render_sync/scope_definition.rb +30 -0
  41. data/lib/render_sync/view_helpers.rb +106 -0
  42. data/test/dummy/README.rdoc +28 -0
  43. data/test/dummy/Rakefile +6 -0
  44. data/test/dummy/app/assets/javascripts/application.js +13 -0
  45. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  46. data/test/dummy/app/controllers/application_controller.rb +5 -0
  47. data/test/dummy/app/helpers/application_helper.rb +2 -0
  48. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  49. data/test/dummy/app/views/sync/users/_show.html.erb +1 -0
  50. data/test/dummy/app/views/sync/users/refetch/_show.html.erb +1 -0
  51. data/test/dummy/bin/bundle +3 -0
  52. data/test/dummy/bin/rails +4 -0
  53. data/test/dummy/bin/rake +4 -0
  54. data/test/dummy/config.ru +4 -0
  55. data/test/dummy/config/application.rb +22 -0
  56. data/test/dummy/config/boot.rb +5 -0
  57. data/test/dummy/config/database.yml +8 -0
  58. data/test/dummy/config/environment.rb +5 -0
  59. data/test/dummy/config/environments/development.rb +29 -0
  60. data/test/dummy/config/environments/production.rb +80 -0
  61. data/test/dummy/config/environments/test.rb +36 -0
  62. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  63. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  64. data/test/dummy/config/initializers/inflections.rb +16 -0
  65. data/test/dummy/config/initializers/mime_types.rb +5 -0
  66. data/test/dummy/config/initializers/secret_token.rb +12 -0
  67. data/test/dummy/config/initializers/session_store.rb +3 -0
  68. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  69. data/test/dummy/config/locales/en.yml +23 -0
  70. data/test/dummy/config/routes.rb +56 -0
  71. data/test/dummy/log/test.log +626 -0
  72. data/test/dummy/public/404.html +58 -0
  73. data/test/dummy/public/422.html +58 -0
  74. data/test/dummy/public/500.html +57 -0
  75. data/test/dummy/public/favicon.ico +0 -0
  76. data/test/em_minitest_spec.rb +100 -0
  77. data/test/fixtures/sync_auth_token_missing.yml +6 -0
  78. data/test/fixtures/sync_erb.yml +7 -0
  79. data/test/fixtures/sync_faye.yml +7 -0
  80. data/test/fixtures/sync_pusher.yml +8 -0
  81. data/test/models/group.rb +3 -0
  82. data/test/models/project.rb +2 -0
  83. data/test/models/todo.rb +8 -0
  84. data/test/models/user.rb +82 -0
  85. data/test/sync/abstract_controller.rb +3 -0
  86. data/test/sync/action_test.rb +82 -0
  87. data/test/sync/channel_test.rb +15 -0
  88. data/test/sync/config_test.rb +25 -0
  89. data/test/sync/erb_tracker_test.rb +72 -0
  90. data/test/sync/faye_extension_test.rb +87 -0
  91. data/test/sync/message_test.rb +159 -0
  92. data/test/sync/model_test.rb +315 -0
  93. data/test/sync/partial_creator_test.rb +35 -0
  94. data/test/sync/partial_test.rb +107 -0
  95. data/test/sync/protected_attributes_test.rb +39 -0
  96. data/test/sync/reactor_test.rb +18 -0
  97. data/test/sync/refetch_model_test.rb +26 -0
  98. data/test/sync/refetch_partial_creator_test.rb +16 -0
  99. data/test/sync/refetch_partial_test.rb +74 -0
  100. data/test/sync/renderer_test.rb +19 -0
  101. data/test/sync/resource_test.rb +181 -0
  102. data/test/sync/scope_definition_test.rb +39 -0
  103. data/test/sync/scope_test.rb +113 -0
  104. data/test/test_helper.rb +66 -0
  105. data/test/travis/sync.ru +14 -0
  106. data/test/travis/sync.yml +21 -0
  107. metadata +317 -0
@@ -0,0 +1,39 @@
1
+ require_relative '../test_helper'
2
+ require_relative '../models/user'
3
+
4
+ describe RenderSync::ScopeDefinition do
5
+ include TestHelper
6
+
7
+ describe '#ensure_valid_params!' do
8
+ it 'raises an argument error with one invalid argument' do
9
+ assert_raises ArgumentError do
10
+ # attribute, associtation or instance method 'project' not present in user instance
11
+ RenderSync::ScopeDefinition.ensure_valid_params!(User, ->(project) { User.all })
12
+ end
13
+ end
14
+
15
+ it 'raises an argument error with a valid and an invalid argument' do
16
+ assert_raises ArgumentError do
17
+ # attribute, associtation or instance method 'project' not present in user instance
18
+ # name is a column on user record
19
+ RenderSync::ScopeDefinition.ensure_valid_params!(User, ->(name, project) { User.all })
20
+ end
21
+ end
22
+
23
+ it 'returns true with no arguments' do
24
+ assert_equal true, RenderSync::ScopeDefinition.ensure_valid_params!(User, -> { User.all })
25
+ end
26
+
27
+ it 'returns true with one valid argument' do
28
+ # group is an association on the user record
29
+ assert_equal true, RenderSync::ScopeDefinition.ensure_valid_params!(User, ->(group) { User.all })
30
+ end
31
+
32
+ it 'returns true with multiple valid argument' do
33
+ # group is an association on the user record
34
+ # name is a column on user record
35
+ assert_equal true, RenderSync::ScopeDefinition.ensure_valid_params!(User, ->(group, name) { User.all })
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,113 @@
1
+ require 'rails/all'
2
+ require_relative '../test_helper'
3
+ require_relative 'abstract_controller'
4
+ require_relative '../models/user'
5
+ require_relative '../models/project'
6
+ require_relative '../models/group'
7
+ require_relative '../models/todo'
8
+
9
+ describe RenderSync::Scope do
10
+ include TestHelper
11
+
12
+ describe '#initialize' do
13
+ it 'return an RenderSync::Scope instance' do
14
+ assert_kind_of RenderSync::Scope, User.with_group_id(5)
15
+ end
16
+
17
+ it 'raises an argument error with an invalid param (float)' do
18
+ assert_raises ArgumentError do
19
+ User.with_group_id(0.5)
20
+ end
21
+ end
22
+
23
+ it 'returns an RenderSync::Scope instance and sets instance variables correctly' do
24
+ scope = User.with_group_id(5)
25
+ assert_kind_of RenderSync::Scope, scope
26
+ assert_equal scope.args, [5]
27
+ assert_equal scope.scope_definition, User.sync_scope_definitions[:with_group_id]
28
+ end
29
+ end
30
+
31
+ describe '#new_from_model' do
32
+ it 'returns an RenderSync::Scope instance and sets instance variables correctly' do
33
+ scope_definition = User.sync_scope_definitions[:with_group_id]
34
+ user = User.create(group_id: 3)
35
+ scope = RenderSync::Scope.new_from_model(scope_definition, user)
36
+ assert_kind_of RenderSync::Scope, scope
37
+ assert_equal scope.args, [3]
38
+ assert_equal scope.scope_definition, scope_definition
39
+ end
40
+ end
41
+
42
+ describe '#relation' do
43
+ it 'returns the ActiveRecord::Relation' do
44
+ scope = User.with_group_id(5)
45
+ assert_kind_of ActiveRecord::Relation, scope.relation
46
+ end
47
+ end
48
+
49
+ describe '#valid?' do
50
+ it 'returns true for a relation that does not throw an exception' do
51
+ scope = User.with_group_id(5)
52
+ assert_equal true, scope.valid?
53
+ end
54
+
55
+ it 'returns false for a relation that throws an exception' do
56
+ scope_definition = User.sync_scope_definitions[:in_group]
57
+ user = User.create(group: nil)
58
+ scope = RenderSync::Scope.new_from_model(scope_definition, user)
59
+ assert_equal false, scope.valid?
60
+ end
61
+ end
62
+
63
+ describe '#contains?' do
64
+ it 'returns true if the given record is in the scope' do
65
+ todo = Todo.create(user_id: 2)
66
+ scope = Todo.with_user_id(2)
67
+ assert_equal true, scope.contains?(todo)
68
+ end
69
+
70
+ it 'returns false if the given record is not in the scope' do
71
+ todo = Todo.create(user_id: 2)
72
+ scope = Todo.with_user_id(5)
73
+ assert_equal false, scope.contains?(todo)
74
+ end
75
+ end
76
+
77
+ describe 'setting up a sync scope in the model' do
78
+ it 'adds a simple scope definition to the model class' do
79
+ class User < ActiveRecord::Base
80
+ sync_scope :without_name, -> { where(name: nil)}
81
+ end
82
+ assert User.sync_scope_definitions[:without_name].present?
83
+ end
84
+
85
+ it 'adds a scope definition if lambda names are correct' do
86
+ class User < ActiveRecord::Base
87
+ sync_scope :with_age, ->(age) { where(age: age)}
88
+ end
89
+ assert User.sync_scope_definitions[:with_age].present?
90
+ end
91
+
92
+ it 'raises an exception if lambda arg names are invalid' do
93
+ assert_raises ArgumentError do
94
+ class User < ActiveRecord::Base
95
+ sync_scope :with_max_age, ->(max_age) { where(["age <= ?", max_age])}
96
+ end
97
+ end
98
+ assert User.sync_scope_definitions[:with_max_age].blank?
99
+ end
100
+
101
+ it 'raises an exception if sync scope name method with that name is already defined' do
102
+ assert_raises ArgumentError do
103
+ class User < ActiveRecord::Base
104
+ sync_scope :old, -> { where(["arg > ?", 70])}
105
+ sync_scope :old, -> { where(["arg > ?", 90])}
106
+ end
107
+ end
108
+ end
109
+
110
+
111
+ end
112
+
113
+ end
@@ -0,0 +1,66 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'minitest/autorun'
4
+ require 'minitest/pride'
5
+ require 'yaml'
6
+ require 'json'
7
+ require 'pry'
8
+ require 'codeclimate-test-reporter'
9
+
10
+ CodeClimate::TestReporter.start
11
+
12
+ require_relative 'em_minitest_spec'
13
+
14
+ ENV["RAILS_ENV"] = "test"
15
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
16
+
17
+ Bundler.require(:default)
18
+
19
+ def setup_database
20
+ ActiveRecord::Base.send :extend, RenderSync::Model::ClassMethods
21
+
22
+ ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS todos")
23
+ ActiveRecord::Base.connection.execute("CREATE TABLE todos (id INTEGER PRIMARY KEY, name TEXT, complete BOOLEAN, user_id INTEGER)")
24
+
25
+ ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS users")
26
+ ActiveRecord::Base.connection.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, cool BOOLEAN, group_id INTEGER, project_id INTEGER, age INTEGER)")
27
+
28
+ ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS groups")
29
+ ActiveRecord::Base.connection.execute("CREATE TABLE groups (id INTEGER PRIMARY KEY, name TEXT)")
30
+
31
+ ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS projects")
32
+ ActiveRecord::Base.connection.execute("CREATE TABLE projects (id INTEGER PRIMARY KEY, name TEXT)")
33
+ end
34
+
35
+ module TestHelper
36
+
37
+ def setup
38
+ RenderSync.load_config(
39
+ File.expand_path("../fixtures/sync_faye.yml", __FILE__),
40
+ "test"
41
+ )
42
+ RenderSync.logger.level = ENV['LOGLEVEL'].present? ? ENV['LOGLEVEL'].to_i : 1
43
+ end
44
+ end
45
+
46
+ module TestHelperFaye
47
+
48
+ def setup
49
+ RenderSync.load_config(
50
+ File.expand_path("../fixtures/sync_faye.yml", __FILE__),
51
+ "test"
52
+ )
53
+ RenderSync.logger.level = ENV['LOGLEVEL'].present? ? ENV['LOGLEVEL'].to_i : 1
54
+ end
55
+ end
56
+
57
+ module TestHelperPusher
58
+
59
+ def setup
60
+ RenderSync.load_config(
61
+ File.expand_path("../fixtures/sync_pusher.yml", __FILE__),
62
+ "test"
63
+ )
64
+ RenderSync.logger.level = ENV['LOGLEVEL'].present? ? ENV['LOGLEVEL'].to_i : 1
65
+ end
66
+ end
@@ -0,0 +1,14 @@
1
+ # Run with: rackup sync.ru -E production
2
+ require "bundler/setup"
3
+ require "yaml"
4
+ require "faye"
5
+ require "render_sync"
6
+
7
+ Faye::WebSocket.load_adapter 'thin'
8
+
9
+ RenderSync.load_config(
10
+ File.expand_path("../config/sync.yml", __FILE__),
11
+ ENV["RAILS_ENV"] || "development"
12
+ )
13
+
14
+ run RenderSync.pubsub_app
@@ -0,0 +1,21 @@
1
+ # Faye
2
+ development:
3
+ server: "http://localhost:9292/faye"
4
+ adapter_javascript_url: "http://localhost:9292/faye/faye.js"
5
+ auth_token: "secret"
6
+ adapter: "Faye"
7
+ async: true
8
+
9
+ test:
10
+ server: "http://localhost:9292/faye"
11
+ adapter_javascript_url: "http://localhost:9292/faye/faye.js"
12
+ adapter: "Faye"
13
+ auth_token: "secret"
14
+ async: false
15
+
16
+ production:
17
+ server: "http://localhost:9292/faye"
18
+ adapter_javascript_url: "http://localhost:9292/faye/faye.js"
19
+ adapter: "Faye"
20
+ auth_token: "secret"
21
+ async: true
metadata ADDED
@@ -0,0 +1,317 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: render_sync
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris McCord
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: em-http-request
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faye
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thin
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pusher
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.11.3
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.11.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 3.2.13
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 3.2.13
97
+ - !ruby/object:Gem::Dependency
98
+ name: cache_digests
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: mocha
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.13.3
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.13.3
125
+ - !ruby/object:Gem::Dependency
126
+ name: sqlite3
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: minitest
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "<"
158
+ - !ruby/object:Gem::Version
159
+ version: 5.0.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "<"
165
+ - !ruby/object:Gem::Version
166
+ version: 5.0.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: codeclimate-test-reporter
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ description: RenderSync turns your Rails partials realtime with automatic updates
182
+ through Faye
183
+ email: chris@chrismccord.com
184
+ executables: []
185
+ extensions: []
186
+ extra_rdoc_files: []
187
+ files:
188
+ - CHANGELOG.md
189
+ - Gemfile
190
+ - LICENSE
191
+ - README.md
192
+ - Rakefile
193
+ - app/assets/javascripts/sync.coffee
194
+ - app/controllers/sync/refetches_controller.rb
195
+ - app/helpers/render_sync/config_helper.rb
196
+ - config/routes.rb
197
+ - config/sync.yml
198
+ - lib/generators/render_sync/install_generator.rb
199
+ - lib/generators/render_sync/templates/sync.ru
200
+ - lib/generators/render_sync/templates/sync.yml
201
+ - lib/render_sync.rb
202
+ - lib/render_sync/action.rb
203
+ - lib/render_sync/actions.rb
204
+ - lib/render_sync/channel.rb
205
+ - lib/render_sync/clients/dummy.rb
206
+ - lib/render_sync/clients/faye.rb
207
+ - lib/render_sync/clients/pusher.rb
208
+ - lib/render_sync/controller_helpers.rb
209
+ - lib/render_sync/engine.rb
210
+ - lib/render_sync/erb_tracker.rb
211
+ - lib/render_sync/faye_extension.rb
212
+ - lib/render_sync/model.rb
213
+ - lib/render_sync/model_actions.rb
214
+ - lib/render_sync/model_change_tracking.rb
215
+ - lib/render_sync/model_syncing.rb
216
+ - lib/render_sync/model_touching.rb
217
+ - lib/render_sync/partial.rb
218
+ - lib/render_sync/partial_creator.rb
219
+ - lib/render_sync/reactor.rb
220
+ - lib/render_sync/refetch_model.rb
221
+ - lib/render_sync/refetch_partial.rb
222
+ - lib/render_sync/refetch_partial_creator.rb
223
+ - lib/render_sync/renderer.rb
224
+ - lib/render_sync/resource.rb
225
+ - lib/render_sync/scope.rb
226
+ - lib/render_sync/scope_definition.rb
227
+ - lib/render_sync/view_helpers.rb
228
+ - test/dummy/README.rdoc
229
+ - test/dummy/Rakefile
230
+ - test/dummy/app/assets/javascripts/application.js
231
+ - test/dummy/app/assets/stylesheets/application.css
232
+ - test/dummy/app/controllers/application_controller.rb
233
+ - test/dummy/app/helpers/application_helper.rb
234
+ - test/dummy/app/views/layouts/application.html.erb
235
+ - test/dummy/app/views/sync/users/_show.html.erb
236
+ - test/dummy/app/views/sync/users/refetch/_show.html.erb
237
+ - test/dummy/bin/bundle
238
+ - test/dummy/bin/rails
239
+ - test/dummy/bin/rake
240
+ - test/dummy/config.ru
241
+ - test/dummy/config/application.rb
242
+ - test/dummy/config/boot.rb
243
+ - test/dummy/config/database.yml
244
+ - test/dummy/config/environment.rb
245
+ - test/dummy/config/environments/development.rb
246
+ - test/dummy/config/environments/production.rb
247
+ - test/dummy/config/environments/test.rb
248
+ - test/dummy/config/initializers/backtrace_silencers.rb
249
+ - test/dummy/config/initializers/filter_parameter_logging.rb
250
+ - test/dummy/config/initializers/inflections.rb
251
+ - test/dummy/config/initializers/mime_types.rb
252
+ - test/dummy/config/initializers/secret_token.rb
253
+ - test/dummy/config/initializers/session_store.rb
254
+ - test/dummy/config/initializers/wrap_parameters.rb
255
+ - test/dummy/config/locales/en.yml
256
+ - test/dummy/config/routes.rb
257
+ - test/dummy/log/test.log
258
+ - test/dummy/public/404.html
259
+ - test/dummy/public/422.html
260
+ - test/dummy/public/500.html
261
+ - test/dummy/public/favicon.ico
262
+ - test/em_minitest_spec.rb
263
+ - test/fixtures/sync_auth_token_missing.yml
264
+ - test/fixtures/sync_erb.yml
265
+ - test/fixtures/sync_faye.yml
266
+ - test/fixtures/sync_pusher.yml
267
+ - test/models/group.rb
268
+ - test/models/project.rb
269
+ - test/models/todo.rb
270
+ - test/models/user.rb
271
+ - test/sync/abstract_controller.rb
272
+ - test/sync/action_test.rb
273
+ - test/sync/channel_test.rb
274
+ - test/sync/config_test.rb
275
+ - test/sync/erb_tracker_test.rb
276
+ - test/sync/faye_extension_test.rb
277
+ - test/sync/message_test.rb
278
+ - test/sync/model_test.rb
279
+ - test/sync/partial_creator_test.rb
280
+ - test/sync/partial_test.rb
281
+ - test/sync/protected_attributes_test.rb
282
+ - test/sync/reactor_test.rb
283
+ - test/sync/refetch_model_test.rb
284
+ - test/sync/refetch_partial_creator_test.rb
285
+ - test/sync/refetch_partial_test.rb
286
+ - test/sync/renderer_test.rb
287
+ - test/sync/resource_test.rb
288
+ - test/sync/scope_definition_test.rb
289
+ - test/sync/scope_test.rb
290
+ - test/test_helper.rb
291
+ - test/travis/sync.ru
292
+ - test/travis/sync.yml
293
+ homepage: http://github.com/chrismccord/render_sync
294
+ licenses:
295
+ - MIT
296
+ metadata: {}
297
+ post_install_message:
298
+ rdoc_options: []
299
+ require_paths:
300
+ - lib
301
+ required_ruby_version: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - ">="
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
306
+ required_rubygems_version: !ruby/object:Gem::Requirement
307
+ requirements:
308
+ - - ">="
309
+ - !ruby/object:Gem::Version
310
+ version: 1.3.4
311
+ requirements: []
312
+ rubyforge_project:
313
+ rubygems_version: 2.2.5
314
+ signing_key:
315
+ specification_version: 4
316
+ summary: Realtime Rails Partials
317
+ test_files: []