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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +32 -0
- data/Gemfile +2 -1
- data/README.md +29 -34
- data/lib/assets/javascripts/websocket_rails/abstract_connection.js.coffee +45 -0
- data/lib/assets/javascripts/websocket_rails/channel.js.coffee +34 -17
- data/lib/assets/javascripts/websocket_rails/event.js.coffee +13 -11
- data/lib/assets/javascripts/websocket_rails/http_connection.js.coffee +44 -45
- data/lib/assets/javascripts/websocket_rails/main.js +1 -0
- data/lib/assets/javascripts/websocket_rails/websocket_connection.js.coffee +20 -34
- data/lib/assets/javascripts/websocket_rails/websocket_rails.js.coffee +60 -15
- data/lib/generators/websocket_rails/install/templates/websocket_rails.rb +15 -0
- data/lib/rails/config/routes.rb +1 -1
- data/lib/rails/tasks/websocket_rails.tasks +6 -2
- data/lib/websocket_rails/channel.rb +28 -2
- data/lib/websocket_rails/channel_manager.rb +16 -0
- data/lib/websocket_rails/configuration.rb +26 -1
- data/lib/websocket_rails/connection_adapters/http.rb +7 -0
- data/lib/websocket_rails/connection_adapters/web_socket.rb +3 -1
- data/lib/websocket_rails/connection_manager.rb +1 -1
- data/lib/websocket_rails/controller_factory.rb +1 -1
- data/lib/websocket_rails/event.rb +9 -2
- data/lib/websocket_rails/logging.rb +0 -1
- data/lib/websocket_rails/synchronization.rb +11 -7
- data/lib/websocket_rails/version.rb +1 -1
- data/spec/javascripts/generated/assets/abstract_connection.js +71 -0
- data/spec/javascripts/generated/assets/channel.js +58 -34
- data/spec/javascripts/generated/assets/event.js +12 -16
- data/spec/javascripts/generated/assets/http_connection.js +67 -65
- data/spec/javascripts/generated/assets/websocket_connection.js +36 -51
- data/spec/javascripts/generated/assets/websocket_rails.js +68 -21
- data/spec/javascripts/generated/specs/channel_spec.js +102 -19
- data/spec/javascripts/generated/specs/helpers.js +17 -0
- data/spec/javascripts/generated/specs/websocket_connection_spec.js +72 -19
- data/spec/javascripts/generated/specs/websocket_rails_spec.js +146 -47
- data/spec/javascripts/support/jasmine.yml +10 -2
- data/spec/javascripts/support/jasmine_helper.rb +38 -0
- data/spec/javascripts/websocket_rails/channel_spec.coffee +66 -12
- data/spec/javascripts/websocket_rails/event_spec.coffee +7 -7
- data/spec/javascripts/websocket_rails/helpers.coffee +6 -0
- data/spec/javascripts/websocket_rails/websocket_connection_spec.coffee +53 -15
- data/spec/javascripts/websocket_rails/websocket_rails_spec.coffee +108 -25
- data/spec/unit/base_controller_spec.rb +41 -0
- data/spec/unit/channel_manager_spec.rb +21 -0
- data/spec/unit/channel_spec.rb +43 -3
- data/spec/unit/connection_adapters/http_spec.rb +24 -3
- data/spec/unit/connection_adapters_spec.rb +2 -2
- data/spec/unit/connection_manager_spec.rb +1 -1
- data/spec/unit/event_spec.rb +25 -1
- data/spec/unit/logging_spec.rb +1 -1
- metadata +57 -67
- 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
|
data/spec/unit/channel_spec.rb
CHANGED
@@ -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.
|
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
|
53
|
-
event =
|
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 {
|
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)
|
data/spec/unit/event_spec.rb
CHANGED
@@ -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
|
data/spec/unit/logging_spec.rb
CHANGED
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.
|
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:
|
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
|
-
-
|
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/
|
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
|
-
|
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
|
-
|
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:
|
326
|
+
rubygems_version: 2.2.2
|
337
327
|
signing_key:
|
338
|
-
specification_version:
|
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: []
|