websocket-rails 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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: []