hkroger-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 +237 -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 +42 -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 +63 -0
  19. data/lib/hkroger-websocket-rails.rb +1 -0
  20. data/lib/rails/app/controllers/websocket_rails/delegation_controller.rb +13 -0
  21. data/lib/rails/config/routes.rb +7 -0
  22. data/lib/rails/tasks/websocket_rails.tasks +42 -0
  23. data/lib/spec_helpers/matchers/route_matchers.rb +65 -0
  24. data/lib/spec_helpers/matchers/trigger_matchers.rb +113 -0
  25. data/lib/spec_helpers/spec_helper_event.rb +34 -0
  26. data/lib/websocket-rails.rb +108 -0
  27. data/lib/websocket_rails/base_controller.rb +197 -0
  28. data/lib/websocket_rails/channel.rb +97 -0
  29. data/lib/websocket_rails/channel_manager.rb +55 -0
  30. data/lib/websocket_rails/configuration.rb +169 -0
  31. data/lib/websocket_rails/connection_adapters.rb +195 -0
  32. data/lib/websocket_rails/connection_adapters/http.rb +120 -0
  33. data/lib/websocket_rails/connection_adapters/web_socket.rb +36 -0
  34. data/lib/websocket_rails/connection_manager.rb +119 -0
  35. data/lib/websocket_rails/controller_factory.rb +80 -0
  36. data/lib/websocket_rails/data_store.rb +145 -0
  37. data/lib/websocket_rails/dispatcher.rb +129 -0
  38. data/lib/websocket_rails/engine.rb +26 -0
  39. data/lib/websocket_rails/event.rb +189 -0
  40. data/lib/websocket_rails/event_map.rb +184 -0
  41. data/lib/websocket_rails/event_queue.rb +33 -0
  42. data/lib/websocket_rails/internal_events.rb +37 -0
  43. data/lib/websocket_rails/logging.rb +133 -0
  44. data/lib/websocket_rails/spec_helpers.rb +3 -0
  45. data/lib/websocket_rails/synchronization.rb +182 -0
  46. data/lib/websocket_rails/user_manager.rb +276 -0
  47. data/lib/websocket_rails/version.rb +3 -0
  48. data/spec/dummy/Rakefile +7 -0
  49. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  50. data/spec/dummy/app/controllers/chat_controller.rb +53 -0
  51. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  52. data/spec/dummy/app/models/user.rb +2 -0
  53. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  54. data/spec/dummy/config.ru +4 -0
  55. data/spec/dummy/config/application.rb +45 -0
  56. data/spec/dummy/config/boot.rb +10 -0
  57. data/spec/dummy/config/database.yml +22 -0
  58. data/spec/dummy/config/environment.rb +5 -0
  59. data/spec/dummy/config/environments/development.rb +26 -0
  60. data/spec/dummy/config/environments/production.rb +49 -0
  61. data/spec/dummy/config/environments/test.rb +34 -0
  62. data/spec/dummy/config/events.rb +7 -0
  63. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  64. data/spec/dummy/config/initializers/inflections.rb +10 -0
  65. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  66. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  67. data/spec/dummy/config/initializers/session_store.rb +8 -0
  68. data/spec/dummy/config/locales/en.yml +5 -0
  69. data/spec/dummy/config/routes.rb +58 -0
  70. data/spec/dummy/db/development.sqlite3 +0 -0
  71. data/spec/dummy/db/migrate/20130902222552_create_users.rb +10 -0
  72. data/spec/dummy/db/schema.rb +23 -0
  73. data/spec/dummy/db/test.sqlite3 +0 -0
  74. data/spec/dummy/log/development.log +17 -0
  75. data/spec/dummy/log/production.log +0 -0
  76. data/spec/dummy/log/server.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 +69 -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 +274 -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 +247 -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,88 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ class ComplexProductController < WebsocketRails::BaseController
5
+
6
+ def simplify
7
+ end
8
+
9
+ end
10
+
11
+ module MyModule
12
+
13
+ class AnotherController < WebsocketRails::BaseController
14
+
15
+ def complicate
16
+ end
17
+
18
+ end
19
+
20
+ module MySubModule
21
+
22
+ class AThirdController < WebsocketRails::BaseController
23
+
24
+ def confuse
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+
33
+
34
+ module WebsocketRails
35
+
36
+ describe TargetValidator do
37
+
38
+ describe 'validate_target' do
39
+
40
+ it 'should raise an error when target class is not supported' do
41
+ expect{TargetValidator.validate_target(50)}.to raise_error
42
+ end
43
+
44
+ it 'should raise if passed hash does not contain the to: key' do
45
+ expect{TargetValidator.validate_target(from: ComplexProductController, with_method: :simplify)}.to raise_error
46
+ end
47
+
48
+ it 'should raise if passed hash does not contain the with_method: key' do
49
+ expect{TargetValidator.validate_target(to: ComplexProductController, without_method: :simplify)}.to raise_error
50
+ end
51
+
52
+ it 'should raise if the string is not in the correct format' do
53
+ expect{TargetValidator.validate_target('malformed_string')}.to raise_error
54
+ expect{TargetValidator.validate_target('very#malformed#string')}.to raise_error
55
+ end
56
+
57
+ it 'should raise if the class specified in the String does not exist' do
58
+ expect{TargetValidator.validate_target('my_non_existent#my_method')}.to raise_error
59
+ end
60
+
61
+ it 'should parse correctly a well-formed Hash' do
62
+ TargetValidator::validate_target(to: ComplexProductController, with_method: :simplify).should == [ComplexProductController, :simplify]
63
+ end
64
+
65
+ context 'when the string is well-formed' do
66
+
67
+ it 'should parse correctly when the controller is a top-level' do
68
+ TargetValidator::validate_target('complex_product#simplify').should == [ComplexProductController, :simplify]
69
+ end
70
+
71
+ it 'should parse correctly when the controller belongs to a module' do
72
+ TargetValidator::validate_target('my_module/another#complicate').should == [MyModule::AnotherController, :complicate]
73
+ end
74
+
75
+ it 'should parse correctly with many levels of module nesting' do
76
+ TargetValidator::validate_target('my_module/my_sub_module/a_third#confuse').should == [MyModule::MySubModule::AThirdController, :confuse]
77
+ end
78
+
79
+ end
80
+
81
+ end
82
+
83
+
84
+ end
85
+
86
+
87
+
88
+ end
@@ -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: hkroger-websocket-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.1
5
+ platform: ruby
6
+ authors:
7
+ - Hannu Kröger
8
+ - Dan Knox
9
+ - Kyle Whalen
10
+ - Three Dot Loft LLC
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2019-11-20 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rails
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rack
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ - !ruby/object:Gem::Dependency
45
+ name: faye-websocket
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: thin
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ - !ruby/object:Gem::Dependency
73
+ name: redis
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ - !ruby/object:Gem::Dependency
87
+ name: hiredis
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ type: :runtime
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ - !ruby/object:Gem::Dependency
101
+ name: em-synchrony
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ type: :runtime
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ - !ruby/object:Gem::Dependency
115
+ name: redis-objects
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :runtime
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ - !ruby/object:Gem::Dependency
129
+ name: rake
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rspec-rails
144
+ requirement: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ type: :development
150
+ prerelease: false
151
+ version_requirements: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ - !ruby/object:Gem::Dependency
157
+ name: rspec-matchers-matchers
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ description: Seamless Ruby on Rails websocket integration.
171
+ email:
172
+ - hkroger@gmail.com
173
+ executables:
174
+ - thin-socketrails
175
+ extensions: []
176
+ extra_rdoc_files: []
177
+ files:
178
+ - CHANGELOG.md
179
+ - Gemfile
180
+ - MIT-LICENSE
181
+ - README.md
182
+ - Rakefile
183
+ - bin/thin-socketrails
184
+ - lib/assets/javascripts/websocket_rails/abstract_connection.js.coffee
185
+ - lib/assets/javascripts/websocket_rails/channel.js.coffee
186
+ - lib/assets/javascripts/websocket_rails/event.js.coffee
187
+ - lib/assets/javascripts/websocket_rails/http_connection.js.coffee
188
+ - lib/assets/javascripts/websocket_rails/main.js
189
+ - lib/assets/javascripts/websocket_rails/websocket_connection.js.coffee
190
+ - lib/assets/javascripts/websocket_rails/websocket_rails.js.coffee
191
+ - lib/config.ru
192
+ - lib/generators/websocket_rails/install/install_generator.rb
193
+ - lib/generators/websocket_rails/install/templates/events.rb
194
+ - lib/generators/websocket_rails/install/templates/websocket_rails.rb
195
+ - lib/hkroger-websocket-rails.rb
196
+ - lib/rails/app/controllers/websocket_rails/delegation_controller.rb
197
+ - lib/rails/config/routes.rb
198
+ - lib/rails/tasks/websocket_rails.tasks
199
+ - lib/spec_helpers/matchers/route_matchers.rb
200
+ - lib/spec_helpers/matchers/trigger_matchers.rb
201
+ - lib/spec_helpers/spec_helper_event.rb
202
+ - lib/websocket-rails.rb
203
+ - lib/websocket_rails/base_controller.rb
204
+ - lib/websocket_rails/channel.rb
205
+ - lib/websocket_rails/channel_manager.rb
206
+ - lib/websocket_rails/configuration.rb
207
+ - lib/websocket_rails/connection_adapters.rb
208
+ - lib/websocket_rails/connection_adapters/http.rb
209
+ - lib/websocket_rails/connection_adapters/web_socket.rb
210
+ - lib/websocket_rails/connection_manager.rb
211
+ - lib/websocket_rails/controller_factory.rb
212
+ - lib/websocket_rails/data_store.rb
213
+ - lib/websocket_rails/dispatcher.rb
214
+ - lib/websocket_rails/engine.rb
215
+ - lib/websocket_rails/event.rb
216
+ - lib/websocket_rails/event_map.rb
217
+ - lib/websocket_rails/event_queue.rb
218
+ - lib/websocket_rails/internal_events.rb
219
+ - lib/websocket_rails/logging.rb
220
+ - lib/websocket_rails/spec_helpers.rb
221
+ - lib/websocket_rails/synchronization.rb
222
+ - lib/websocket_rails/user_manager.rb
223
+ - lib/websocket_rails/version.rb
224
+ - spec/dummy/Rakefile
225
+ - spec/dummy/app/controllers/application_controller.rb
226
+ - spec/dummy/app/controllers/chat_controller.rb
227
+ - spec/dummy/app/helpers/application_helper.rb
228
+ - spec/dummy/app/models/user.rb
229
+ - spec/dummy/app/views/layouts/application.html.erb
230
+ - spec/dummy/config.ru
231
+ - spec/dummy/config/application.rb
232
+ - spec/dummy/config/boot.rb
233
+ - spec/dummy/config/database.yml
234
+ - spec/dummy/config/environment.rb
235
+ - spec/dummy/config/environments/development.rb
236
+ - spec/dummy/config/environments/production.rb
237
+ - spec/dummy/config/environments/test.rb
238
+ - spec/dummy/config/events.rb
239
+ - spec/dummy/config/initializers/backtrace_silencers.rb
240
+ - spec/dummy/config/initializers/inflections.rb
241
+ - spec/dummy/config/initializers/mime_types.rb
242
+ - spec/dummy/config/initializers/secret_token.rb
243
+ - spec/dummy/config/initializers/session_store.rb
244
+ - spec/dummy/config/locales/en.yml
245
+ - spec/dummy/config/routes.rb
246
+ - spec/dummy/db/development.sqlite3
247
+ - spec/dummy/db/migrate/20130902222552_create_users.rb
248
+ - spec/dummy/db/schema.rb
249
+ - spec/dummy/db/test.sqlite3
250
+ - spec/dummy/log/development.log
251
+ - spec/dummy/log/production.log
252
+ - spec/dummy/log/server.log
253
+ - spec/dummy/public/404.html
254
+ - spec/dummy/public/422.html
255
+ - spec/dummy/public/500.html
256
+ - spec/dummy/public/favicon.ico
257
+ - spec/dummy/public/javascripts/application.js
258
+ - spec/dummy/public/javascripts/controls.js
259
+ - spec/dummy/public/javascripts/dragdrop.js
260
+ - spec/dummy/public/javascripts/effects.js
261
+ - spec/dummy/public/javascripts/prototype.js
262
+ - spec/dummy/public/javascripts/rails.js
263
+ - spec/dummy/script/rails
264
+ - spec/integration/connection_manager_spec.rb
265
+ - spec/javascripts/support/jasmine.yml
266
+ - spec/javascripts/support/jasmine_helper.rb
267
+ - spec/javascripts/support/vendor/sinon-1.7.1.js
268
+ - spec/javascripts/websocket_rails/channel_spec.coffee
269
+ - spec/javascripts/websocket_rails/event_spec.coffee
270
+ - spec/javascripts/websocket_rails/helpers.coffee
271
+ - spec/javascripts/websocket_rails/websocket_connection_spec.coffee
272
+ - spec/javascripts/websocket_rails/websocket_rails_spec.coffee
273
+ - spec/spec_helper.rb
274
+ - spec/spec_helpers/matchers/route_matchers_spec.rb
275
+ - spec/spec_helpers/matchers/trigger_matchers_spec.rb
276
+ - spec/spec_helpers/spec_helper_event_spec.rb
277
+ - spec/support/helper_methods.rb
278
+ - spec/support/mock_web_socket.rb
279
+ - spec/unit/base_controller_spec.rb
280
+ - spec/unit/channel_manager_spec.rb
281
+ - spec/unit/channel_spec.rb
282
+ - spec/unit/connection_adapters/http_spec.rb
283
+ - spec/unit/connection_adapters/web_socket_spec.rb
284
+ - spec/unit/connection_adapters_spec.rb
285
+ - spec/unit/connection_manager_spec.rb
286
+ - spec/unit/controller_factory_spec.rb
287
+ - spec/unit/data_store_spec.rb
288
+ - spec/unit/dispatcher_spec.rb
289
+ - spec/unit/event_map_spec.rb
290
+ - spec/unit/event_queue_spec.rb
291
+ - spec/unit/event_spec.rb
292
+ - spec/unit/logging_spec.rb
293
+ - spec/unit/synchronization_spec.rb
294
+ - spec/unit/target_validator_spec.rb
295
+ - spec/unit/user_manager_spec.rb
296
+ homepage: http://websocket-rails.github.io
297
+ licenses:
298
+ - MIT
299
+ metadata: {}
300
+ post_install_message: Welcome to WebsocketRails v0.7.1!
301
+ rdoc_options: []
302
+ require_paths:
303
+ - lib
304
+ required_ruby_version: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - ">="
307
+ - !ruby/object:Gem::Version
308
+ version: '0'
309
+ required_rubygems_version: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ requirements: []
315
+ rubygems_version: 3.0.6
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: []