websocket-rails 0.6.2 → 0.7.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 (52) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +32 -0
  3. data/Gemfile +2 -1
  4. data/README.md +29 -34
  5. data/lib/assets/javascripts/websocket_rails/abstract_connection.js.coffee +45 -0
  6. data/lib/assets/javascripts/websocket_rails/channel.js.coffee +34 -17
  7. data/lib/assets/javascripts/websocket_rails/event.js.coffee +13 -11
  8. data/lib/assets/javascripts/websocket_rails/http_connection.js.coffee +44 -45
  9. data/lib/assets/javascripts/websocket_rails/main.js +1 -0
  10. data/lib/assets/javascripts/websocket_rails/websocket_connection.js.coffee +20 -34
  11. data/lib/assets/javascripts/websocket_rails/websocket_rails.js.coffee +60 -15
  12. data/lib/generators/websocket_rails/install/templates/websocket_rails.rb +15 -0
  13. data/lib/rails/config/routes.rb +1 -1
  14. data/lib/rails/tasks/websocket_rails.tasks +6 -2
  15. data/lib/websocket_rails/channel.rb +28 -2
  16. data/lib/websocket_rails/channel_manager.rb +16 -0
  17. data/lib/websocket_rails/configuration.rb +26 -1
  18. data/lib/websocket_rails/connection_adapters/http.rb +7 -0
  19. data/lib/websocket_rails/connection_adapters/web_socket.rb +3 -1
  20. data/lib/websocket_rails/connection_manager.rb +1 -1
  21. data/lib/websocket_rails/controller_factory.rb +1 -1
  22. data/lib/websocket_rails/event.rb +9 -2
  23. data/lib/websocket_rails/logging.rb +0 -1
  24. data/lib/websocket_rails/synchronization.rb +11 -7
  25. data/lib/websocket_rails/version.rb +1 -1
  26. data/spec/javascripts/generated/assets/abstract_connection.js +71 -0
  27. data/spec/javascripts/generated/assets/channel.js +58 -34
  28. data/spec/javascripts/generated/assets/event.js +12 -16
  29. data/spec/javascripts/generated/assets/http_connection.js +67 -65
  30. data/spec/javascripts/generated/assets/websocket_connection.js +36 -51
  31. data/spec/javascripts/generated/assets/websocket_rails.js +68 -21
  32. data/spec/javascripts/generated/specs/channel_spec.js +102 -19
  33. data/spec/javascripts/generated/specs/helpers.js +17 -0
  34. data/spec/javascripts/generated/specs/websocket_connection_spec.js +72 -19
  35. data/spec/javascripts/generated/specs/websocket_rails_spec.js +146 -47
  36. data/spec/javascripts/support/jasmine.yml +10 -2
  37. data/spec/javascripts/support/jasmine_helper.rb +38 -0
  38. data/spec/javascripts/websocket_rails/channel_spec.coffee +66 -12
  39. data/spec/javascripts/websocket_rails/event_spec.coffee +7 -7
  40. data/spec/javascripts/websocket_rails/helpers.coffee +6 -0
  41. data/spec/javascripts/websocket_rails/websocket_connection_spec.coffee +53 -15
  42. data/spec/javascripts/websocket_rails/websocket_rails_spec.coffee +108 -25
  43. data/spec/unit/base_controller_spec.rb +41 -0
  44. data/spec/unit/channel_manager_spec.rb +21 -0
  45. data/spec/unit/channel_spec.rb +43 -3
  46. data/spec/unit/connection_adapters/http_spec.rb +24 -3
  47. data/spec/unit/connection_adapters_spec.rb +2 -2
  48. data/spec/unit/connection_manager_spec.rb +1 -1
  49. data/spec/unit/event_spec.rb +25 -1
  50. data/spec/unit/logging_spec.rb +1 -1
  51. metadata +57 -67
  52. data/spec/javascripts/support/jasmine_config.rb +0 -63
@@ -29,5 +29,46 @@ module WebsocketRails
29
29
  end
30
30
  end
31
31
 
32
+ describe "before actions" do
33
+ class BeforeActionController < WebsocketRails::BaseController
34
+ before_action { self.before_array << :all }
35
+ before_action(:only => :only) { self.before_array << :only_1 }
36
+ before_action(:only => :except) { self.before_array << :only_2 }
37
+ before_action(:only => [:main, :only]) { self.before_array << :only_3 }
38
+ before_action(:only => [:except, :only]) { self.before_array << :only_4 }
39
+ before_action(:except => :except) { self.before_array << :except_1 }
40
+ before_action(:except => :only) { self.before_array << :except_2 }
41
+ before_action(:except => [:main, :except]){ self.before_array << :except_3 }
42
+ before_action(:except => [:only, :except]){ self.before_array << :except_4 }
43
+
44
+ attr_accessor :before_array
45
+
46
+ def initialize
47
+ @before_array = []
48
+ end
49
+ def main;end
50
+ def only;end
51
+ def except;end
52
+ end
53
+
54
+ let(:controller) { BeforeActionController.new }
55
+ it 'should handle before_action with no args' do
56
+ controller.instance_variable_set :@_action_name, 'main'
57
+ controller.process_action(:main, nil)
58
+ controller.before_array.should == [:all, :only_3, :except_1, :except_2, :except_4]
59
+ end
60
+
61
+ it 'should handle before_action with :only flag' do
62
+ controller.instance_variable_set :@_action_name, 'only'
63
+ controller.process_action(:only, nil)
64
+ controller.before_array.should == [:all, :only_1, :only_3, :only_4, :except_1, :except_3]
65
+ end
66
+
67
+ it 'should handle before_action with :except flag' do
68
+ controller.instance_variable_set :@_action_name, 'except'
69
+ controller.process_action(:except, nil)
70
+ controller.before_array.should == [:all, :only_2, :only_4, :except_2]
71
+ end
72
+ end
32
73
  end
33
74
  end
@@ -15,8 +15,29 @@ module WebsocketRails
15
15
  end
16
16
  end
17
17
 
18
+ describe ".channel_tokens" do
19
+ it "should delegate to channel manager" do
20
+ ChannelManager.any_instance.should_receive(:channel_tokens)
21
+ WebsocketRails.channel_tokens
22
+ end
23
+ end
24
+
18
25
  describe ChannelManager do
19
26
 
27
+ describe "#channel_tokens" do
28
+ it "should return a Hash-like" do
29
+ subject.channel_tokens.respond_to? :[]
30
+ subject.channel_tokens.respond_to? :has_key?
31
+ end
32
+
33
+ it 'is used to store Channel\'s token' do
34
+ ChannelManager.any_instance.should_receive(:channel_tokens)
35
+ .at_least(:twice).and_call_original
36
+ token = Channel.new(:my_new_test_channel).token
37
+ WebsocketRails.channel_tokens[:my_new_test_channel].should == token
38
+ end
39
+ end
40
+
20
41
  describe "#[]" do
21
42
  context "accessing a channel" do
22
43
  it "should create the channel if it does not exist" do
@@ -15,6 +15,15 @@ module WebsocketRails
15
15
  end
16
16
 
17
17
  describe "#subscribe" do
18
+ before do
19
+ connection.stub(:user).and_return({})
20
+ WebsocketRails.config.stub(:broadcast_subscriber_events?).and_return(true)
21
+ end
22
+ it "should trigger an event when subscriber joins" do
23
+ subject.should_receive(:trigger).with("subscriber_join", connection.user)
24
+ subject.subscribe connection
25
+ end
26
+
18
27
  it "should add the connection to the subscriber pool" do
19
28
  subject.subscribe connection
20
29
  subject.subscribers.include?(connection).should be_true
@@ -22,6 +31,10 @@ module WebsocketRails
22
31
  end
23
32
 
24
33
  describe "#unsubscribe" do
34
+ before do
35
+ connection.stub(:user).and_return({})
36
+ WebsocketRails.config.stub(:broadcast_subscriber_events?).and_return(true)
37
+ end
25
38
  it "should remove connection from subscriber pool" do
26
39
  subject.subscribe connection
27
40
  subject.unsubscribe connection
@@ -32,6 +45,12 @@ module WebsocketRails
32
45
  subject.unsubscribe connection
33
46
  subject.subscribers.include?(connection).should be_false
34
47
  end
48
+
49
+ it "should trigger an event when subscriber parts" do
50
+ subject.subscribers << connection
51
+ subject.should_receive(:trigger).with('subscriber_part', connection.user)
52
+ subject.unsubscribe connection
53
+ end
35
54
  end
36
55
 
37
56
  describe "#trigger" do
@@ -43,17 +62,23 @@ module WebsocketRails
43
62
  event
44
63
  end
45
64
  connection.should_receive(:trigger).with(event)
46
- subject.subscribe connection
65
+ subject.subscribers << connection
47
66
  subject.trigger 'event', 'data'
48
67
  end
49
68
  end
50
69
 
51
70
  describe "#trigger_event" do
52
- it "should forward the event to the subscribers" do
53
- event = double('event').as_null_object
71
+ it "should forward the event to subscribers if token matches" do
72
+ event = Event.new 'awesome_event', {:channel => 'awesome_channel', :token => subject.token}
54
73
  subject.should_receive(:send_data).with(event)
55
74
  subject.trigger_event event
56
75
  end
76
+
77
+ it "should ignore the event if the token is invalid" do
78
+ event = Event.new 'invalid_event', {:channel => 'awesome_channel', :token => 'invalid_token'}
79
+ subject.should_not_receive(:send_data).with(event)
80
+ subject.trigger_event event
81
+ end
57
82
  end
58
83
 
59
84
  context "private channels" do
@@ -103,6 +128,21 @@ module WebsocketRails
103
128
  subject.is_private?.should_not be_true
104
129
  end
105
130
  end
131
+
132
+ describe "#token" do
133
+ it 'is long enough' do
134
+ subject.token.length.should > 10
135
+ end
136
+
137
+ it 'remains the same between two call' do
138
+ subject.token.should == subject.token
139
+ end
140
+
141
+ it 'is the same for two channels with the same name' do
142
+ subject.token.should == Channel.new(subject.name).token
143
+ end
144
+ end
145
+
106
146
  end
107
147
  end
108
148
  end
@@ -3,9 +3,14 @@ require 'spec_helper'
3
3
  module WebsocketRails
4
4
  module ConnectionAdapters
5
5
  describe Http do
6
-
7
- subject { Http.new( mock_request, double('Dispatcher').as_null_object ) }
8
-
6
+
7
+ subject {
8
+ mr = mock_request
9
+ mr.stub(:protocol).and_return('http://')
10
+ mr.stub(:raw_host_with_port).and_return('localhost:3000')
11
+ Http.new(mr , double('Dispatcher').as_null_object )
12
+ }
13
+
9
14
  it "should be a subclass of ConnectionAdapters::Base" do
10
15
  subject.class.superclass.should == ConnectionAdapters::Base
11
16
  end
@@ -18,6 +23,22 @@ module WebsocketRails
18
23
  subject.headers['Transfer-Encoding'].should == "chunked"
19
24
  end
20
25
 
26
+ it "should not set the Access-Control-Allow-Origin header" do
27
+ subject.headers['Access-Control-Allow-Origin'].should be_blank
28
+ end
29
+
30
+ context "with IE CORS hack enabled" do
31
+ it "should set the Access-Control-Allow-Origin when passed an array as configuration" do
32
+ WebsocketRails.config.allowed_origins = ['http://localhost:3000']
33
+ subject.headers['Access-Control-Allow-Origin'].should == 'http://localhost:3000'
34
+ end
35
+
36
+ it "should set the Access-Control-Allow-Origin when passed a string as configuration" do
37
+ WebsocketRails.config.allowed_origins = 'http://localhost:3000'
38
+ subject.headers['Access-Control-Allow-Origin'].should == 'http://localhost:3000'
39
+ end
40
+ end
41
+
21
42
  context "#encode_chunk" do
22
43
  it "should properly encode strings" do
23
44
  subject.__send__(:encode_chunk,"test").should == "4\r\ntest\r\n"
@@ -192,8 +192,8 @@ module WebsocketRails
192
192
 
193
193
  it "should serialize all events into one array" do
194
194
  serialized_array = <<-EOF.strip_heredoc
195
- [["queued_event",{"id":null,"channel":null,"user_id":null,"data":"test","success":null,"result":null,"server_token":null}],
196
- ["queued_event",{"id":null,"channel":null,"user_id":null,"data":"test","success":null,"result":null,"server_token":null}]]
195
+ [["queued_event",{"id":null,"channel":null,"user_id":null,"data":"test","success":null,"result":null,"token":null,"server_token":null}],
196
+ ["queued_event",{"id":null,"channel":null,"user_id":null,"data":"test","success":null,"result":null,"token":null,"server_token":null}]]
197
197
  EOF
198
198
 
199
199
  subject.should_receive(:send).with(serialized_array.gsub(/\n/,'').strip)
@@ -72,7 +72,7 @@ module WebsocketRails
72
72
  context "new POST event" do
73
73
  before(:each) do
74
74
  @mock_http = ConnectionAdapters::Http.new(mock_request, dispatcher)
75
- @mock_http.id = 1
75
+ @mock_http.id = 'is_i_as_string'
76
76
  app.connections[@mock_http.id] = @mock_http
77
77
  end
78
78
 
@@ -6,9 +6,10 @@ module WebsocketRails
6
6
  let(:encoded_message_string) { '["new_message",{"id":"1234","data":"this is a message"}]' }
7
7
  let(:namespace_encoded_message_string) { '["product.new_message",{"id":"1234","data":"this is a message"}]' }
8
8
  let(:namespace_encoded_message) { '["product.new_message",{"id":"1234","data":{"message":"this is a message"}}]' }
9
- let(:channel_encoded_message_string) { '["new_message",{"id":"1234","channel":"awesome_channel","user_id":null,"data":"this is a message","success":null,"result":null,"server_token":"1234"}]' }
9
+ let(:channel_encoded_message_string) { '["new_message",{"id":"1234","channel":"awesome_channel","user_id":null,"data":"this is a message","success":null,"result":null,"token":null,"server_token":"1234"}]' }
10
10
  let(:synchronizable_encoded_message) { '["new_message",{"id":"1234","data":{"message":"this is a message"},"server_token":"1234"}]' }
11
11
  let(:connection) { double('connection') }
12
+ let(:wrongly_encoded_message) { '["new_message",[{"id":"1234","data":{"message":"this is a message"}}]]' }
12
13
 
13
14
  before { connection.stub!(:id).and_return(1) }
14
15
 
@@ -31,6 +32,13 @@ module WebsocketRails
31
32
  event.data[:message].should == 'this is a message'
32
33
  end
33
34
  end
35
+
36
+ context "invalid messages" do
37
+ it "should return an invalid event if data is wrongly encoded" do
38
+ event = Event.new_from_json( wrongly_encoded_message, connection )
39
+ event.is_invalid?.should be_true
40
+ end
41
+ end
34
42
  end
35
43
 
36
44
  describe ".new_on_open" do
@@ -87,6 +95,12 @@ module WebsocketRails
87
95
  event.channel.should == :awesome_channel
88
96
  event.name.should == :event
89
97
  end
98
+
99
+ it "should not raise an error if the channel name cannot be symbolized" do
100
+ expect { Event.new "event", :data => {}, :connection => connection, :channel => 5 }.to_not raise_error(NoMethodError)
101
+ event = Event.new "event", :data => {}, :connection => connection, :channel => 5
102
+ event.channel.should == :"5"
103
+ end
90
104
  end
91
105
 
92
106
  describe "#is_channel?" do
@@ -151,6 +165,16 @@ module WebsocketRails
151
165
  data[1]['server_token'].should == '1234'
152
166
  end
153
167
  end
168
+
169
+ describe "#as_json" do
170
+ it "returns a Hash representation of the Event" do
171
+ hash = { data: { 'test' => 'test'}, channel: :awesome_channel }
172
+ event = Event.new 'test', hash
173
+ event.as_json[0].should == :test
174
+ event.as_json[1][:data].should == hash[:data]
175
+ event.as_json[1][:channel].should == hash[:channel]
176
+ end
177
+ end
154
178
  end
155
179
 
156
180
  end
@@ -94,7 +94,7 @@ module WebsocketRails
94
94
  object.should_receive(:log_exception).with(exception)
95
95
  expect {
96
96
  object.log_event(@event) { raise exception }
97
- }.to raise_exception(exception)
97
+ }.to raise_exception(exception.class, exception.message)
98
98
  end
99
99
  end
100
100
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: websocket-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Knox
@@ -11,166 +10,160 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2013-09-09 00:00:00.000000000 Z
13
+ date: 2014-03-14 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: rails
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
19
+ - - ">="
22
20
  - !ruby/object:Gem::Version
23
21
  version: '0'
24
22
  type: :runtime
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ! '>='
26
+ - - ">="
30
27
  - !ruby/object:Gem::Version
31
28
  version: '0'
32
29
  - !ruby/object:Gem::Dependency
33
30
  name: rack
34
31
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
32
  requirements:
37
- - - ! '>='
33
+ - - ">="
38
34
  - !ruby/object:Gem::Version
39
35
  version: '0'
40
36
  type: :runtime
41
37
  prerelease: false
42
38
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
39
  requirements:
45
- - - ! '>='
40
+ - - ">="
46
41
  - !ruby/object:Gem::Version
47
42
  version: '0'
48
43
  - !ruby/object:Gem::Dependency
49
44
  name: faye-websocket
50
45
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
46
  requirements:
53
- - - ! '>='
47
+ - - ">="
54
48
  - !ruby/object:Gem::Version
55
49
  version: '0'
56
50
  type: :runtime
57
51
  prerelease: false
58
52
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
53
  requirements:
61
- - - ! '>='
54
+ - - ">="
62
55
  - !ruby/object:Gem::Version
63
56
  version: '0'
64
57
  - !ruby/object:Gem::Dependency
65
58
  name: thin
66
59
  requirement: !ruby/object:Gem::Requirement
67
- none: false
68
60
  requirements:
69
- - - ! '>='
61
+ - - ">="
70
62
  - !ruby/object:Gem::Version
71
63
  version: '0'
72
64
  type: :runtime
73
65
  prerelease: false
74
66
  version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
67
  requirements:
77
- - - ! '>='
68
+ - - ">="
78
69
  - !ruby/object:Gem::Version
79
70
  version: '0'
80
71
  - !ruby/object:Gem::Dependency
81
72
  name: redis
82
73
  requirement: !ruby/object:Gem::Requirement
83
- none: false
84
74
  requirements:
85
- - - ! '>='
75
+ - - ">="
86
76
  - !ruby/object:Gem::Version
87
77
  version: '0'
88
78
  type: :runtime
89
79
  prerelease: false
90
80
  version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
81
  requirements:
93
- - - ! '>='
82
+ - - ">="
94
83
  - !ruby/object:Gem::Version
95
84
  version: '0'
96
85
  - !ruby/object:Gem::Dependency
97
86
  name: hiredis
98
87
  requirement: !ruby/object:Gem::Requirement
99
- none: false
100
88
  requirements:
101
- - - ! '>='
89
+ - - ">="
102
90
  - !ruby/object:Gem::Version
103
91
  version: '0'
104
92
  type: :runtime
105
93
  prerelease: false
106
94
  version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
95
  requirements:
109
- - - ! '>='
96
+ - - ">="
110
97
  - !ruby/object:Gem::Version
111
98
  version: '0'
112
99
  - !ruby/object:Gem::Dependency
113
100
  name: em-synchrony
114
101
  requirement: !ruby/object:Gem::Requirement
115
- none: false
116
102
  requirements:
117
- - - ! '>='
103
+ - - ">="
118
104
  - !ruby/object:Gem::Version
119
105
  version: '0'
120
106
  type: :runtime
121
107
  prerelease: false
122
108
  version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
109
  requirements:
125
- - - ! '>='
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
+ - - ">="
126
125
  - !ruby/object:Gem::Version
127
126
  version: '0'
128
127
  - !ruby/object:Gem::Dependency
129
128
  name: rake
130
129
  requirement: !ruby/object:Gem::Requirement
131
- none: false
132
130
  requirements:
133
- - - ! '>='
131
+ - - ">="
134
132
  - !ruby/object:Gem::Version
135
133
  version: '0'
136
134
  type: :development
137
135
  prerelease: false
138
136
  version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
137
  requirements:
141
- - - ! '>='
138
+ - - ">="
142
139
  - !ruby/object:Gem::Version
143
140
  version: '0'
144
141
  - !ruby/object:Gem::Dependency
145
142
  name: rspec-rails
146
143
  requirement: !ruby/object:Gem::Requirement
147
- none: false
148
144
  requirements:
149
- - - ! '>='
145
+ - - ">="
150
146
  - !ruby/object:Gem::Version
151
147
  version: '0'
152
148
  type: :development
153
149
  prerelease: false
154
150
  version_requirements: !ruby/object:Gem::Requirement
155
- none: false
156
151
  requirements:
157
- - - ! '>='
152
+ - - ">="
158
153
  - !ruby/object:Gem::Version
159
154
  version: '0'
160
155
  - !ruby/object:Gem::Dependency
161
156
  name: rspec-matchers-matchers
162
157
  requirement: !ruby/object:Gem::Requirement
163
- none: false
164
158
  requirements:
165
- - - ! '>='
159
+ - - ">="
166
160
  - !ruby/object:Gem::Version
167
161
  version: '0'
168
162
  type: :development
169
163
  prerelease: false
170
164
  version_requirements: !ruby/object:Gem::Requirement
171
- none: false
172
165
  requirements:
173
- - - ! '>='
166
+ - - ">="
174
167
  - !ruby/object:Gem::Version
175
168
  version: '0'
176
169
  description: Seamless Ruby on Rails websocket integration.
@@ -181,6 +174,13 @@ executables:
181
174
  extensions: []
182
175
  extra_rdoc_files: []
183
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
184
  - lib/assets/javascripts/websocket_rails/channel.js.coffee
185
185
  - lib/assets/javascripts/websocket_rails/event.js.coffee
186
186
  - lib/assets/javascripts/websocket_rails/http_connection.js.coffee
@@ -202,9 +202,9 @@ files:
202
202
  - lib/websocket_rails/channel.rb
203
203
  - lib/websocket_rails/channel_manager.rb
204
204
  - lib/websocket_rails/configuration.rb
205
+ - lib/websocket_rails/connection_adapters.rb
205
206
  - lib/websocket_rails/connection_adapters/http.rb
206
207
  - lib/websocket_rails/connection_adapters/web_socket.rb
207
- - lib/websocket_rails/connection_adapters.rb
208
208
  - lib/websocket_rails/connection_manager.rb
209
209
  - lib/websocket_rails/controller_factory.rb
210
210
  - lib/websocket_rails/data_store.rb
@@ -219,12 +219,13 @@ files:
219
219
  - lib/websocket_rails/synchronization.rb
220
220
  - lib/websocket_rails/user_manager.rb
221
221
  - lib/websocket_rails/version.rb
222
- - bin/thin-socketrails
222
+ - spec/dummy/Rakefile
223
223
  - spec/dummy/app/controllers/application_controller.rb
224
224
  - spec/dummy/app/controllers/chat_controller.rb
225
225
  - spec/dummy/app/helpers/application_helper.rb
226
226
  - spec/dummy/app/models/user.rb
227
227
  - spec/dummy/app/views/layouts/application.html.erb
228
+ - spec/dummy/config.ru
228
229
  - spec/dummy/config/application.rb
229
230
  - spec/dummy/config/boot.rb
230
231
  - spec/dummy/config/database.yml
@@ -240,7 +241,6 @@ files:
240
241
  - spec/dummy/config/initializers/session_store.rb
241
242
  - spec/dummy/config/locales/en.yml
242
243
  - spec/dummy/config/routes.rb
243
- - spec/dummy/config.ru
244
244
  - spec/dummy/db/development.sqlite3
245
245
  - spec/dummy/db/migrate/20130902222552_create_users.rb
246
246
  - spec/dummy/db/schema.rb
@@ -259,9 +259,9 @@ files:
259
259
  - spec/dummy/public/javascripts/effects.js
260
260
  - spec/dummy/public/javascripts/prototype.js
261
261
  - spec/dummy/public/javascripts/rails.js
262
- - spec/dummy/Rakefile
263
262
  - spec/dummy/script/rails
264
263
  - spec/integration/connection_manager_spec.rb
264
+ - spec/javascripts/generated/assets/abstract_connection.js
265
265
  - spec/javascripts/generated/assets/channel.js
266
266
  - spec/javascripts/generated/assets/event.js
267
267
  - spec/javascripts/generated/assets/http_connection.js
@@ -269,13 +269,15 @@ files:
269
269
  - spec/javascripts/generated/assets/websocket_rails.js
270
270
  - spec/javascripts/generated/specs/channel_spec.js
271
271
  - spec/javascripts/generated/specs/event_spec.js
272
+ - spec/javascripts/generated/specs/helpers.js
272
273
  - spec/javascripts/generated/specs/websocket_connection_spec.js
273
274
  - spec/javascripts/generated/specs/websocket_rails_spec.js
274
275
  - spec/javascripts/support/jasmine.yml
275
- - spec/javascripts/support/jasmine_config.rb
276
+ - spec/javascripts/support/jasmine_helper.rb
276
277
  - spec/javascripts/support/vendor/sinon-1.7.1.js
277
278
  - spec/javascripts/websocket_rails/channel_spec.coffee
278
279
  - spec/javascripts/websocket_rails/event_spec.coffee
280
+ - spec/javascripts/websocket_rails/helpers.coffee
279
281
  - spec/javascripts/websocket_rails/websocket_connection_spec.coffee
280
282
  - spec/javascripts/websocket_rails/websocket_rails_spec.coffee
281
283
  - spec/spec_helper.rb
@@ -301,41 +303,29 @@ files:
301
303
  - spec/unit/synchronization_spec.rb
302
304
  - spec/unit/target_validator_spec.rb
303
305
  - spec/unit/user_manager_spec.rb
304
- - MIT-LICENSE
305
- - Rakefile
306
- - Gemfile
307
- - README.md
308
- - CHANGELOG.md
309
- homepage: http://danknox.github.com/websocket-rails/
306
+ homepage: http://websocket-rails.github.io
310
307
  licenses:
311
308
  - MIT
312
- post_install_message: Welcome to WebsocketRails v0.6.2!
309
+ metadata: {}
310
+ post_install_message: Welcome to WebsocketRails v0.7.0!
313
311
  rdoc_options: []
314
312
  require_paths:
315
313
  - lib
316
314
  required_ruby_version: !ruby/object:Gem::Requirement
317
- none: false
318
315
  requirements:
319
- - - ! '>='
316
+ - - ">="
320
317
  - !ruby/object:Gem::Version
321
318
  version: '0'
322
- segments:
323
- - 0
324
- hash: -822058374610225796
325
319
  required_rubygems_version: !ruby/object:Gem::Requirement
326
- none: false
327
320
  requirements:
328
- - - ! '>='
321
+ - - ">="
329
322
  - !ruby/object:Gem::Version
330
323
  version: '0'
331
- segments:
332
- - 0
333
- hash: -822058374610225796
334
324
  requirements: []
335
325
  rubyforge_project: websocket-rails
336
- rubygems_version: 1.8.25
326
+ rubygems_version: 2.2.2
337
327
  signing_key:
338
- specification_version: 3
328
+ specification_version: 4
339
329
  summary: Plug and play websocket support for ruby on rails. Includes event router
340
330
  for mapping javascript events to controller actions.
341
331
  test_files: []