wwl-websocket-rails 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +328 -0
  3. data/Gemfile +27 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.md +239 -0
  6. data/Rakefile +72 -0
  7. data/bin/thin-socketrails +45 -0
  8. data/lib/assets/javascripts/websocket_rails/abstract_connection.js.coffee +45 -0
  9. data/lib/assets/javascripts/websocket_rails/channel.js.coffee +70 -0
  10. data/lib/assets/javascripts/websocket_rails/event.js.coffee +46 -0
  11. data/lib/assets/javascripts/websocket_rails/http_connection.js.coffee +66 -0
  12. data/lib/assets/javascripts/websocket_rails/main.js +6 -0
  13. data/lib/assets/javascripts/websocket_rails/websocket_connection.js.coffee +29 -0
  14. data/lib/assets/javascripts/websocket_rails/websocket_rails.js.coffee +158 -0
  15. data/lib/config.ru +3 -0
  16. data/lib/generators/websocket_rails/install/install_generator.rb +33 -0
  17. data/lib/generators/websocket_rails/install/templates/events.rb +14 -0
  18. data/lib/generators/websocket_rails/install/templates/websocket_rails.rb +68 -0
  19. data/lib/rails/app/controllers/websocket_rails/delegation_controller.rb +13 -0
  20. data/lib/rails/config/routes.rb +7 -0
  21. data/lib/rails/tasks/websocket_rails.tasks +42 -0
  22. data/lib/spec_helpers/matchers/route_matchers.rb +65 -0
  23. data/lib/spec_helpers/matchers/trigger_matchers.rb +138 -0
  24. data/lib/spec_helpers/spec_helper_event.rb +34 -0
  25. data/lib/websocket-rails.rb +108 -0
  26. data/lib/websocket_rails/base_controller.rb +208 -0
  27. data/lib/websocket_rails/channel.rb +97 -0
  28. data/lib/websocket_rails/channel_manager.rb +55 -0
  29. data/lib/websocket_rails/configuration.rb +177 -0
  30. data/lib/websocket_rails/connection_adapters/http.rb +120 -0
  31. data/lib/websocket_rails/connection_adapters/web_socket.rb +35 -0
  32. data/lib/websocket_rails/connection_adapters.rb +195 -0
  33. data/lib/websocket_rails/connection_manager.rb +119 -0
  34. data/lib/websocket_rails/controller_factory.rb +80 -0
  35. data/lib/websocket_rails/data_store.rb +145 -0
  36. data/lib/websocket_rails/dispatcher.rb +129 -0
  37. data/lib/websocket_rails/engine.rb +26 -0
  38. data/lib/websocket_rails/event.rb +193 -0
  39. data/lib/websocket_rails/event_map.rb +184 -0
  40. data/lib/websocket_rails/event_queue.rb +33 -0
  41. data/lib/websocket_rails/internal_events.rb +37 -0
  42. data/lib/websocket_rails/logging.rb +133 -0
  43. data/lib/websocket_rails/spec_helpers.rb +3 -0
  44. data/lib/websocket_rails/synchronization.rb +178 -0
  45. data/lib/websocket_rails/user_manager.rb +276 -0
  46. data/lib/websocket_rails/version.rb +3 -0
  47. data/spec/dummy/Rakefile +7 -0
  48. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  49. data/spec/dummy/app/controllers/chat_controller.rb +53 -0
  50. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  51. data/spec/dummy/app/models/user.rb +2 -0
  52. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  53. data/spec/dummy/config/application.rb +45 -0
  54. data/spec/dummy/config/boot.rb +10 -0
  55. data/spec/dummy/config/database.yml +22 -0
  56. data/spec/dummy/config/environment.rb +5 -0
  57. data/spec/dummy/config/environments/development.rb +26 -0
  58. data/spec/dummy/config/environments/production.rb +49 -0
  59. data/spec/dummy/config/environments/test.rb +34 -0
  60. data/spec/dummy/config/events.rb +7 -0
  61. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  62. data/spec/dummy/config/initializers/inflections.rb +10 -0
  63. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  64. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  65. data/spec/dummy/config/initializers/session_store.rb +8 -0
  66. data/spec/dummy/config/locales/en.yml +5 -0
  67. data/spec/dummy/config/routes.rb +58 -0
  68. data/spec/dummy/config.ru +4 -0
  69. data/spec/dummy/db/development.sqlite3 +0 -0
  70. data/spec/dummy/db/migrate/20130902222552_create_users.rb +10 -0
  71. data/spec/dummy/db/schema.rb +23 -0
  72. data/spec/dummy/db/test.sqlite3 +0 -0
  73. data/spec/dummy/log/development.log +17 -0
  74. data/spec/dummy/log/production.log +0 -0
  75. data/spec/dummy/log/server.log +0 -0
  76. data/spec/dummy/log/test.log +0 -0
  77. data/spec/dummy/public/404.html +26 -0
  78. data/spec/dummy/public/422.html +26 -0
  79. data/spec/dummy/public/500.html +26 -0
  80. data/spec/dummy/public/favicon.ico +0 -0
  81. data/spec/dummy/public/javascripts/application.js +2 -0
  82. data/spec/dummy/public/javascripts/controls.js +965 -0
  83. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  84. data/spec/dummy/public/javascripts/effects.js +1123 -0
  85. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  86. data/spec/dummy/public/javascripts/rails.js +202 -0
  87. data/spec/dummy/script/rails +6 -0
  88. data/spec/integration/connection_manager_spec.rb +135 -0
  89. data/spec/javascripts/support/jasmine.yml +52 -0
  90. data/spec/javascripts/support/jasmine_helper.rb +38 -0
  91. data/spec/javascripts/support/vendor/sinon-1.7.1.js +4343 -0
  92. data/spec/javascripts/websocket_rails/channel_spec.coffee +112 -0
  93. data/spec/javascripts/websocket_rails/event_spec.coffee +81 -0
  94. data/spec/javascripts/websocket_rails/helpers.coffee +6 -0
  95. data/spec/javascripts/websocket_rails/websocket_connection_spec.coffee +158 -0
  96. data/spec/javascripts/websocket_rails/websocket_rails_spec.coffee +273 -0
  97. data/spec/spec_helper.rb +41 -0
  98. data/spec/spec_helpers/matchers/route_matchers_spec.rb +109 -0
  99. data/spec/spec_helpers/matchers/trigger_matchers_spec.rb +358 -0
  100. data/spec/spec_helpers/spec_helper_event_spec.rb +66 -0
  101. data/spec/support/helper_methods.rb +42 -0
  102. data/spec/support/mock_web_socket.rb +41 -0
  103. data/spec/unit/base_controller_spec.rb +74 -0
  104. data/spec/unit/channel_manager_spec.rb +58 -0
  105. data/spec/unit/channel_spec.rb +169 -0
  106. data/spec/unit/connection_adapters/http_spec.rb +88 -0
  107. data/spec/unit/connection_adapters/web_socket_spec.rb +30 -0
  108. data/spec/unit/connection_adapters_spec.rb +259 -0
  109. data/spec/unit/connection_manager_spec.rb +148 -0
  110. data/spec/unit/controller_factory_spec.rb +76 -0
  111. data/spec/unit/data_store_spec.rb +106 -0
  112. data/spec/unit/dispatcher_spec.rb +203 -0
  113. data/spec/unit/event_map_spec.rb +120 -0
  114. data/spec/unit/event_queue_spec.rb +36 -0
  115. data/spec/unit/event_spec.rb +181 -0
  116. data/spec/unit/logging_spec.rb +162 -0
  117. data/spec/unit/synchronization_spec.rb +150 -0
  118. data/spec/unit/target_validator_spec.rb +88 -0
  119. data/spec/unit/user_manager_spec.rb +165 -0
  120. metadata +320 -0
@@ -0,0 +1,165 @@
1
+ require "spec_helper"
2
+
3
+ module WebsocketRails
4
+
5
+ describe ".users" do
6
+ before do
7
+ Synchronization.stub(:find_user)
8
+ Synchronization.stub(:register_user)
9
+ Synchronization.stub(:destroy_user)
10
+ end
11
+
12
+ it "returns the global instance of UserManager" do
13
+ WebsocketRails.users.should be_a UserManager
14
+ end
15
+
16
+ context "when synchronization is enabled" do
17
+ before do
18
+ WebsocketRails.stub(:synchronize?).and_return(true)
19
+ end
20
+
21
+ context "and the user is connected to a different worker" do
22
+ before do
23
+ user_attr = {name: 'test', email: 'test@test.com'}
24
+ Synchronization.stub(:find_user).and_return(user_attr)
25
+ end
26
+
27
+ it "publishes the event to redis" do
28
+ Synchronization.should_receive(:publish) do |event|
29
+ event.user_id.should == "remote"
30
+ end
31
+
32
+ WebsocketRails.users["remote"].send_message :test, :data
33
+ end
34
+
35
+ it "instantiates a user object pulled from redis" do
36
+ remote = WebsocketRails.users["remote"]
37
+
38
+ remote.class.should == UserManager::RemoteConnection
39
+ remote.user.class.should == User
40
+ remote.user.name.should == 'test'
41
+ remote.user.persisted?.should == true
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ describe UserManager do
48
+
49
+ before do
50
+ Synchronization.stub(:find_user)
51
+ Synchronization.stub(:register_user)
52
+ Synchronization.stub(:destroy_user)
53
+ end
54
+
55
+ let(:connection) do
56
+ connection = double('Connection')
57
+ connection.stub(:id).and_return(1)
58
+ connection.stub(:user_identifier).and_return('Juanita')
59
+ connection
60
+ end
61
+
62
+ describe "#[]=" do
63
+ it "store's a reference to a connection in the user's hash" do
64
+ subject["username"] = connection
65
+ subject.users["username"].connections.first.should == connection
66
+ end
67
+ end
68
+
69
+ describe "#[]" do
70
+ before do
71
+ subject["username"] = connection
72
+ end
73
+
74
+ context "when passed a known user identifier" do
75
+ it "returns that user's connection" do
76
+ subject["username"].connections.first.should == connection
77
+ end
78
+ end
79
+ end
80
+
81
+ describe "#delete" do
82
+ before do
83
+ subject["Juanita"] = connection
84
+ end
85
+
86
+ it "deletes the connection from the users hash" do
87
+ subject.delete(connection)
88
+ subject["Juanita"].should be_a UserManager::MissingConnection
89
+ end
90
+ end
91
+
92
+ describe "#each" do
93
+ before do
94
+ subject['Juanita'] = connection
95
+ end
96
+
97
+ context "when synchronization is disabled" do
98
+ before do
99
+ WebsocketRails.stub(:synchronize?).and_return false
100
+ end
101
+
102
+ it "passes each local connection to the given block" do
103
+ subject.each do |conn|
104
+ connection.should == conn.connections.first
105
+ end
106
+ end
107
+ end
108
+
109
+ context "when synchronization is enabled" do
110
+ before do
111
+ WebsocketRails.stub(:synchronize?).and_return true
112
+
113
+ user_attr = {name: 'test', email: 'test@test.com'}.to_json
114
+ Synchronization.stub(:all_users).and_return 'test' => user_attr
115
+ end
116
+
117
+ it "passes each remote connection to the given block" do
118
+ subject.each do |conn|
119
+ conn.class.should == UserManager::RemoteConnection
120
+ conn.user.class.should == User
121
+ conn.user.name.should == 'test'
122
+ conn.user.email.should == 'test@test.com'
123
+ end
124
+ end
125
+ end
126
+ end
127
+
128
+ describe "#map" do
129
+ before do
130
+ subject['Juanita'] = connection
131
+ end
132
+
133
+ context "when synchronization is disabled" do
134
+ before do
135
+ WebsocketRails.stub(:synchronize?).and_return false
136
+ end
137
+
138
+ it "passes each local connection to the given block and collects the results" do
139
+ results = subject.map do |conn|
140
+ [conn, true]
141
+ end
142
+ results.count.should == 1
143
+ results[0][0].connections.count.should == 1
144
+ end
145
+ end
146
+
147
+ context "when synchronization is enabled" do
148
+ before do
149
+ WebsocketRails.stub(:synchronize?).and_return true
150
+
151
+ user_attr = {name: 'test', email: 'test@test.com'}.to_json
152
+ Synchronization.stub(:all_users).and_return 'test' => user_attr
153
+ end
154
+
155
+ it "passes each remote connection to the given block and collects the results" do
156
+ results = subject.map do |conn|
157
+ [conn, true]
158
+ end
159
+ results.count.should == 1
160
+ results[0].first.class.should == UserManager::RemoteConnection
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
metadata ADDED
@@ -0,0 +1,320 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wwl-websocket-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.1
5
+ platform: ruby
6
+ authors:
7
+ - Dan Knox
8
+ - Kyle Whalen
9
+ - Three Dot Loft LLC
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2015-01-22 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rails
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rack
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: faye-websocket
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: thin
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: redis
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: hiredis
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: em-synchrony
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: redis-objects
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: rake
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: rspec-rails
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: rspec-matchers-matchers
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ description: Seamless Ruby on Rails websocket integration.
170
+ email:
171
+ - dknox@threedotloft.com
172
+ executables:
173
+ - thin-socketrails
174
+ extensions: []
175
+ extra_rdoc_files: []
176
+ files:
177
+ - CHANGELOG.md
178
+ - Gemfile
179
+ - MIT-LICENSE
180
+ - README.md
181
+ - Rakefile
182
+ - bin/thin-socketrails
183
+ - lib/assets/javascripts/websocket_rails/abstract_connection.js.coffee
184
+ - lib/assets/javascripts/websocket_rails/channel.js.coffee
185
+ - lib/assets/javascripts/websocket_rails/event.js.coffee
186
+ - lib/assets/javascripts/websocket_rails/http_connection.js.coffee
187
+ - lib/assets/javascripts/websocket_rails/main.js
188
+ - lib/assets/javascripts/websocket_rails/websocket_connection.js.coffee
189
+ - lib/assets/javascripts/websocket_rails/websocket_rails.js.coffee
190
+ - lib/config.ru
191
+ - lib/generators/websocket_rails/install/install_generator.rb
192
+ - lib/generators/websocket_rails/install/templates/events.rb
193
+ - lib/generators/websocket_rails/install/templates/websocket_rails.rb
194
+ - lib/rails/app/controllers/websocket_rails/delegation_controller.rb
195
+ - lib/rails/config/routes.rb
196
+ - lib/rails/tasks/websocket_rails.tasks
197
+ - lib/spec_helpers/matchers/route_matchers.rb
198
+ - lib/spec_helpers/matchers/trigger_matchers.rb
199
+ - lib/spec_helpers/spec_helper_event.rb
200
+ - lib/websocket-rails.rb
201
+ - lib/websocket_rails/base_controller.rb
202
+ - lib/websocket_rails/channel.rb
203
+ - lib/websocket_rails/channel_manager.rb
204
+ - lib/websocket_rails/configuration.rb
205
+ - lib/websocket_rails/connection_adapters.rb
206
+ - lib/websocket_rails/connection_adapters/http.rb
207
+ - lib/websocket_rails/connection_adapters/web_socket.rb
208
+ - lib/websocket_rails/connection_manager.rb
209
+ - lib/websocket_rails/controller_factory.rb
210
+ - lib/websocket_rails/data_store.rb
211
+ - lib/websocket_rails/dispatcher.rb
212
+ - lib/websocket_rails/engine.rb
213
+ - lib/websocket_rails/event.rb
214
+ - lib/websocket_rails/event_map.rb
215
+ - lib/websocket_rails/event_queue.rb
216
+ - lib/websocket_rails/internal_events.rb
217
+ - lib/websocket_rails/logging.rb
218
+ - lib/websocket_rails/spec_helpers.rb
219
+ - lib/websocket_rails/synchronization.rb
220
+ - lib/websocket_rails/user_manager.rb
221
+ - lib/websocket_rails/version.rb
222
+ - spec/dummy/Rakefile
223
+ - spec/dummy/app/controllers/application_controller.rb
224
+ - spec/dummy/app/controllers/chat_controller.rb
225
+ - spec/dummy/app/helpers/application_helper.rb
226
+ - spec/dummy/app/models/user.rb
227
+ - spec/dummy/app/views/layouts/application.html.erb
228
+ - spec/dummy/config.ru
229
+ - spec/dummy/config/application.rb
230
+ - spec/dummy/config/boot.rb
231
+ - spec/dummy/config/database.yml
232
+ - spec/dummy/config/environment.rb
233
+ - spec/dummy/config/environments/development.rb
234
+ - spec/dummy/config/environments/production.rb
235
+ - spec/dummy/config/environments/test.rb
236
+ - spec/dummy/config/events.rb
237
+ - spec/dummy/config/initializers/backtrace_silencers.rb
238
+ - spec/dummy/config/initializers/inflections.rb
239
+ - spec/dummy/config/initializers/mime_types.rb
240
+ - spec/dummy/config/initializers/secret_token.rb
241
+ - spec/dummy/config/initializers/session_store.rb
242
+ - spec/dummy/config/locales/en.yml
243
+ - spec/dummy/config/routes.rb
244
+ - spec/dummy/db/development.sqlite3
245
+ - spec/dummy/db/migrate/20130902222552_create_users.rb
246
+ - spec/dummy/db/schema.rb
247
+ - spec/dummy/db/test.sqlite3
248
+ - spec/dummy/log/development.log
249
+ - spec/dummy/log/production.log
250
+ - spec/dummy/log/server.log
251
+ - spec/dummy/log/test.log
252
+ - spec/dummy/public/404.html
253
+ - spec/dummy/public/422.html
254
+ - spec/dummy/public/500.html
255
+ - spec/dummy/public/favicon.ico
256
+ - spec/dummy/public/javascripts/application.js
257
+ - spec/dummy/public/javascripts/controls.js
258
+ - spec/dummy/public/javascripts/dragdrop.js
259
+ - spec/dummy/public/javascripts/effects.js
260
+ - spec/dummy/public/javascripts/prototype.js
261
+ - spec/dummy/public/javascripts/rails.js
262
+ - spec/dummy/script/rails
263
+ - spec/integration/connection_manager_spec.rb
264
+ - spec/javascripts/support/jasmine.yml
265
+ - spec/javascripts/support/jasmine_helper.rb
266
+ - spec/javascripts/support/vendor/sinon-1.7.1.js
267
+ - spec/javascripts/websocket_rails/channel_spec.coffee
268
+ - spec/javascripts/websocket_rails/event_spec.coffee
269
+ - spec/javascripts/websocket_rails/helpers.coffee
270
+ - spec/javascripts/websocket_rails/websocket_connection_spec.coffee
271
+ - spec/javascripts/websocket_rails/websocket_rails_spec.coffee
272
+ - spec/spec_helper.rb
273
+ - spec/spec_helpers/matchers/route_matchers_spec.rb
274
+ - spec/spec_helpers/matchers/trigger_matchers_spec.rb
275
+ - spec/spec_helpers/spec_helper_event_spec.rb
276
+ - spec/support/helper_methods.rb
277
+ - spec/support/mock_web_socket.rb
278
+ - spec/unit/base_controller_spec.rb
279
+ - spec/unit/channel_manager_spec.rb
280
+ - spec/unit/channel_spec.rb
281
+ - spec/unit/connection_adapters/http_spec.rb
282
+ - spec/unit/connection_adapters/web_socket_spec.rb
283
+ - spec/unit/connection_adapters_spec.rb
284
+ - spec/unit/connection_manager_spec.rb
285
+ - spec/unit/controller_factory_spec.rb
286
+ - spec/unit/data_store_spec.rb
287
+ - spec/unit/dispatcher_spec.rb
288
+ - spec/unit/event_map_spec.rb
289
+ - spec/unit/event_queue_spec.rb
290
+ - spec/unit/event_spec.rb
291
+ - spec/unit/logging_spec.rb
292
+ - spec/unit/synchronization_spec.rb
293
+ - spec/unit/target_validator_spec.rb
294
+ - spec/unit/user_manager_spec.rb
295
+ homepage: http://websocket-rails.github.io
296
+ licenses:
297
+ - MIT
298
+ metadata: {}
299
+ post_install_message: Welcome to WebsocketRails v0.7.1!
300
+ rdoc_options: []
301
+ require_paths:
302
+ - lib
303
+ required_ruby_version: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - ">="
306
+ - !ruby/object:Gem::Version
307
+ version: '0'
308
+ required_rubygems_version: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - ">="
311
+ - !ruby/object:Gem::Version
312
+ version: '0'
313
+ requirements: []
314
+ rubyforge_project:
315
+ rubygems_version: 2.2.2
316
+ signing_key:
317
+ specification_version: 4
318
+ summary: Plug and play websocket support for ruby on rails. Includes event router
319
+ for mapping javascript events to controller actions.
320
+ test_files: []