websocket-rails 0.0.1 → 0.1.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.
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +6 -1
- data/Gemfile.lock +28 -12
- data/MIT-LICENSE +1 -1
- data/README.md +122 -14
- data/Rakefile +18 -10
- data/bin/thin-socketrails +30 -0
- data/lib/websocket-rails.rb +11 -2
- data/lib/websocket_rails/base_controller.rb +91 -10
- data/lib/websocket_rails/connection_manager.rb +57 -27
- data/lib/websocket_rails/data_store.rb +34 -4
- data/lib/websocket_rails/dispatcher.rb +25 -46
- data/lib/websocket_rails/events.rb +53 -0
- data/lib/websocket_rails/version.rb +1 -1
- data/{test → spec}/dummy/Rakefile +0 -0
- data/{test → spec}/dummy/app/controllers/application_controller.rb +0 -0
- data/spec/dummy/app/controllers/chat_controller.rb +57 -0
- data/{test → spec}/dummy/app/helpers/application_helper.rb +0 -0
- data/{test → spec}/dummy/app/views/layouts/application.html.erb +0 -0
- data/{test → spec}/dummy/config.ru +0 -0
- data/{test → spec}/dummy/config/application.rb +1 -1
- data/{test → spec}/dummy/config/boot.rb +0 -0
- data/{test → spec}/dummy/config/database.yml +0 -0
- data/{test → spec}/dummy/config/environment.rb +0 -0
- data/{test → spec}/dummy/config/environments/development.rb +0 -0
- data/{test → spec}/dummy/config/environments/production.rb +0 -0
- data/{test → spec}/dummy/config/environments/test.rb +0 -0
- data/{test → spec}/dummy/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/dummy/config/initializers/events.rb +7 -0
- data/{test → spec}/dummy/config/initializers/inflections.rb +0 -0
- data/{test → spec}/dummy/config/initializers/mime_types.rb +0 -0
- data/{test → spec}/dummy/config/initializers/secret_token.rb +0 -0
- data/{test → spec}/dummy/config/initializers/session_store.rb +0 -0
- data/{test → spec}/dummy/config/locales/en.yml +0 -0
- data/{test → spec}/dummy/config/routes.rb +0 -0
- data/{test/dummy/public/favicon.ico → spec/dummy/db/test.sqlite3} +0 -0
- data/{test/dummy/public/stylesheets/.gitkeep → spec/dummy/log/development.log} +0 -0
- data/spec/dummy/log/production.log +0 -0
- data/spec/dummy/log/server.log +0 -0
- data/spec/dummy/log/test.log +0 -0
- data/{test → spec}/dummy/public/404.html +0 -0
- data/{test → spec}/dummy/public/422.html +0 -0
- data/{test → spec}/dummy/public/500.html +0 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/{test → spec}/dummy/public/javascripts/application.js +0 -0
- data/{test → spec}/dummy/public/javascripts/controls.js +0 -0
- data/{test → spec}/dummy/public/javascripts/dragdrop.js +0 -0
- data/{test → spec}/dummy/public/javascripts/effects.js +0 -0
- data/{test → spec}/dummy/public/javascripts/prototype.js +0 -0
- data/{test → spec}/dummy/public/javascripts/rails.js +0 -0
- data/spec/dummy/public/stylesheets/.gitkeep +0 -0
- data/{test → spec}/dummy/script/rails +0 -0
- data/spec/spec_helper.rb +60 -0
- data/spec/support/mock_web_socket.rb +27 -0
- data/spec/unit/connection_manager_spec.rb +111 -0
- data/spec/unit/data_store_spec.rb +15 -0
- data/spec/unit/dispatcher_spec.rb +57 -0
- data/spec/unit/events_spec.rb +70 -0
- data/websocket-rails.gemspec +2 -2
- metadata +65 -53
- data/lib/websocket_rails/extensions/common.rb +0 -11
- data/lib/websocket_rails/extensions/websocket_rack.rb +0 -55
- data/test/integration/navigation_test.rb +0 -7
- data/test/support/integration_case.rb +0 -5
- data/test/test_helper.rb +0 -22
- data/test/websocket_rails_test.rb +0 -7
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
ENV["RAILS_ENV"] ||= 'test'
|
2
|
+
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start
|
5
|
+
|
6
|
+
require File.expand_path("../../spec/dummy/config/environment", __FILE__)
|
7
|
+
require 'rspec/rails'
|
8
|
+
require 'rspec/autorun'
|
9
|
+
require 'thin'
|
10
|
+
#require 'vendor/em-rspec/lib/em-rspec'
|
11
|
+
|
12
|
+
$:.push File.expand_path("../../lib", __FILE__)
|
13
|
+
require 'websocket-rails'
|
14
|
+
|
15
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
16
|
+
# in spec/support/ and its subdirectories.
|
17
|
+
Dir["../../spec/support/**/*.rb"].each {|f| require f}
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
# == Mock Framework
|
21
|
+
#
|
22
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
23
|
+
#
|
24
|
+
# config.mock_with :mocha
|
25
|
+
# config.mock_with :flexmock
|
26
|
+
# config.mock_with :rr
|
27
|
+
config.mock_with :rspec
|
28
|
+
|
29
|
+
#config.include FactoryGirl::Syntax::Methods
|
30
|
+
|
31
|
+
# If true, the base class of anonymous controllers will be inferred
|
32
|
+
# automatically. This will be the default behavior in future versions of
|
33
|
+
# rspec-rails.
|
34
|
+
config.infer_base_class_for_anonymous_controllers = false
|
35
|
+
|
36
|
+
config.before(:all) do
|
37
|
+
silence_output
|
38
|
+
end
|
39
|
+
|
40
|
+
config.after(:all) do
|
41
|
+
enable_output
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def silence_output
|
46
|
+
@orig_stderr = $stderr
|
47
|
+
@orig_stdout = $stdout
|
48
|
+
|
49
|
+
# redirect stderr and stdout to /dev/null
|
50
|
+
$stderr = File.new('/dev/null', 'w')
|
51
|
+
$stdout = File.new('/dev/null', 'w')
|
52
|
+
end
|
53
|
+
|
54
|
+
# Replace stdout and stderr so anything else is output correctly.
|
55
|
+
def enable_output
|
56
|
+
$stderr = @orig_stderr
|
57
|
+
$stdout = @orig_stdout
|
58
|
+
@orig_stderr = nil
|
59
|
+
@orig_stdout = nil
|
60
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module WebsocketRails
|
2
|
+
|
3
|
+
class MockWebSocket
|
4
|
+
attr_writer :onmessage, :onerror, :onclose
|
5
|
+
|
6
|
+
def onmessage(event=nil)
|
7
|
+
@onmessage.call(event)
|
8
|
+
end
|
9
|
+
|
10
|
+
def onerror(event=nil)
|
11
|
+
@onerror.call(event)
|
12
|
+
end
|
13
|
+
|
14
|
+
def onclose(event=nil)
|
15
|
+
@onclose.call(event)
|
16
|
+
end
|
17
|
+
|
18
|
+
def rack_response
|
19
|
+
[ -1, {}, [] ]
|
20
|
+
end
|
21
|
+
|
22
|
+
def send(*args)
|
23
|
+
true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'support/mock_web_socket'
|
3
|
+
|
4
|
+
module WebsocketRails
|
5
|
+
describe ConnectionManager do
|
6
|
+
|
7
|
+
def open_connection
|
8
|
+
subject.call(@env)
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:connections) { subject.connections }
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
Faye::WebSocket.stub(:websocket?).and_return(true)
|
15
|
+
@mock_socket = MockWebSocket.new
|
16
|
+
Faye::WebSocket.stub(:new).and_return(@mock_socket)
|
17
|
+
@dispatcher = double('dispatcher').as_null_object
|
18
|
+
Dispatcher.stub(:new).and_return(@dispatcher)
|
19
|
+
@env = {}
|
20
|
+
end
|
21
|
+
|
22
|
+
context "new connections" do
|
23
|
+
it "should add one to the total connection count" do
|
24
|
+
expect { open_connection }.to change { connections.count }.by(1)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should execute the :client_connected event" do
|
28
|
+
@dispatcher.should_receive(:dispatch) do |event,data,connection|
|
29
|
+
event.should == 'client_connected'
|
30
|
+
connection.should == @mock_socket
|
31
|
+
end
|
32
|
+
open_connection
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should store the new connection in the @connections array" do
|
36
|
+
open_connection
|
37
|
+
connections.include?(@mock_socket).should be_true
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return an Async Rack response" do
|
41
|
+
open_connection.should == [ -1, {}, [] ]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "new event on an open connection" do
|
46
|
+
before(:all) { MockEvent = Struct.new(:data) }
|
47
|
+
before(:each) { open_connection }
|
48
|
+
|
49
|
+
it "should dispatch the appropriate event through the Dispatcher" do
|
50
|
+
mock_event = MockEvent.new(:new_message)
|
51
|
+
@dispatcher.should_receive(:receive) do |event,connection|
|
52
|
+
event.should == :new_message
|
53
|
+
connection.should == @mock_socket
|
54
|
+
end
|
55
|
+
@mock_socket.onmessage(mock_event)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "open connections" do
|
60
|
+
before(:each) do
|
61
|
+
Faye::WebSocket.stub(:new).and_return(MockWebSocket.new,MockWebSocket.new,@mock_socket,MockWebSocket.new)
|
62
|
+
4.times { open_connection }
|
63
|
+
end
|
64
|
+
|
65
|
+
context "when closing" do
|
66
|
+
it "should remove the connection object from the @connections array" do
|
67
|
+
@mock_socket.onclose
|
68
|
+
connections.include?(@mock_socket).should be_false
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should decrement the connection count by one" do
|
72
|
+
expect { @mock_socket.onclose }.to change { connections.count }.by(-1)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should dispatch the :client_disconnected event" do
|
76
|
+
@dispatcher.should_receive(:dispatch) do |event,data,connection|
|
77
|
+
event.should == 'client_disconnected'
|
78
|
+
connection.should == @mock_socket
|
79
|
+
end
|
80
|
+
@mock_socket.onclose
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "when experiencing errors" do
|
85
|
+
it "should dispatch the :client_error event" do
|
86
|
+
@mock_socket.stub(:onclose)
|
87
|
+
@dispatcher.should_receive(:dispatch) do |event,data,connection|
|
88
|
+
event.should == 'client_error'
|
89
|
+
connection.should == @mock_socket
|
90
|
+
end
|
91
|
+
@mock_socket.onerror
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should execute the #onclose procedure on connection" do
|
95
|
+
@mock_socket.should_receive(:onclose)
|
96
|
+
@mock_socket.onerror
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
context "invalid connections" do
|
102
|
+
before(:each) do
|
103
|
+
Faye::WebSocket.stub(:websocket?).and_return(false)
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should return a 400 bad request error code" do
|
107
|
+
open_connection.first.should == 400
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module WebsocketRails
|
4
|
+
describe DataStore do
|
5
|
+
before(:each) do
|
6
|
+
@base = double('base_controller')
|
7
|
+
@base.stub(:client_id).and_return(1)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "loads up" do
|
11
|
+
data_store = DataStore.new(@base)
|
12
|
+
data_store.present?.should be_true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module WebsocketRails
|
5
|
+
|
6
|
+
class EventTarget
|
7
|
+
attr_reader :_connection, :_message, :test_method
|
8
|
+
|
9
|
+
def execute_observers(event_name)
|
10
|
+
true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe Dispatcher do
|
15
|
+
|
16
|
+
let(:connection) { MockWebSocket.new }
|
17
|
+
let(:connection_manager) { double('connection_manager').as_null_object }
|
18
|
+
subject { Dispatcher.new(connection_manager) }
|
19
|
+
|
20
|
+
let(:test_message) { ['new_message',{message: 'this is a message'}] }
|
21
|
+
let(:encoded_message) { test_message.to_json }
|
22
|
+
|
23
|
+
context "receiving a new message" do
|
24
|
+
it "should be decoded from JSON and dispatched" do
|
25
|
+
subject.stub(:dispatch) do |event,data,con|
|
26
|
+
event.should == 'new_message'
|
27
|
+
data['message'].should == 'this is a message'
|
28
|
+
con.should == connection
|
29
|
+
end
|
30
|
+
subject.receive(encoded_message,connection)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "dispatching a message for an event" do
|
35
|
+
before(:each) do
|
36
|
+
@target = EventTarget.new
|
37
|
+
Events.any_instance.stub(:routes_for).with(any_args).and_yield( @target, :test_method )
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should execute the correct method on the target class" do
|
41
|
+
@target.should_receive(:test_method)
|
42
|
+
subject.dispatch('test_method',{},connection)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should set the _message instance variable on the target object" do
|
46
|
+
subject.dispatch('test_method',:some_message,connection)
|
47
|
+
@target._message.should == :some_message
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should set the _connection instance variable on the target object" do
|
51
|
+
subject.dispatch('test_method',:some_message,connection)
|
52
|
+
@target._connection.should == connection
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module WebsocketRails
|
4
|
+
describe Events do
|
5
|
+
|
6
|
+
def define_test_events
|
7
|
+
WebsocketRails.route_block = nil
|
8
|
+
WebsocketRails::Events.describe_events do
|
9
|
+
subscribe :client_connected, to: Object, with_method: :object_id
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:dispatcher) { double('dispatcher').as_null_object }
|
14
|
+
subject { Events.new(dispatcher) }
|
15
|
+
|
16
|
+
context "Events.describe_events" do
|
17
|
+
it "should store the event route block in the global configuration" do
|
18
|
+
define_test_events
|
19
|
+
WebsocketRails.route_block.should be_present
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "#evaluate" do
|
24
|
+
it "should evaluate the route DSL" do
|
25
|
+
evaluated = double()
|
26
|
+
evaluated.should_receive(:done)
|
27
|
+
block = Proc.new { evaluated.done }
|
28
|
+
subject.evaluate( block )
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should initialize empty hashes for classes and events" do
|
32
|
+
subject.evaluate Proc.new {}
|
33
|
+
subject.classes.should == {}
|
34
|
+
subject.events.should == {}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "#subscribe" do
|
39
|
+
before(:each) { define_test_events }
|
40
|
+
|
41
|
+
it "should store the event in the events hash" do
|
42
|
+
subject.events.has_key?(:client_connected).should be_true
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should store the instantiated controller in the classes hash" do
|
46
|
+
subject.classes[Object].class.should == Object
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should set the dispatcher on the instantiated controller" do
|
50
|
+
subject.classes[Object].instance_variable_get(:@_dispatcher).should == dispatcher
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should store the class constant and method name in the events hash" do
|
54
|
+
subject.events[:client_connected].should == [[Object,:object_id]]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "#routes_for" do
|
59
|
+
before(:each) { define_test_events }
|
60
|
+
|
61
|
+
it "should yield the class constant and method symbol for each route defined for an event" do
|
62
|
+
subject.routes_for(:client_connected) do |controller,method|
|
63
|
+
controller.class.should == Object
|
64
|
+
method.should == :object_id
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
data/websocket-rails.gemspec
CHANGED
@@ -17,10 +17,10 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.require_path = 'lib'
|
18
18
|
|
19
19
|
s.add_dependency "rack"
|
20
|
-
s.add_dependency "
|
21
|
-
s.add_dependency "websocket-rack"
|
20
|
+
s.add_dependency "faye-websocket"
|
22
21
|
s.add_dependency "thin"
|
23
22
|
s.add_development_dependency "rake"
|
24
23
|
s.add_development_dependency "rails"
|
25
24
|
s.add_development_dependency "sqlite3"
|
25
|
+
s.add_development_dependency "rspec-rails"
|
26
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: websocket-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-
|
14
|
+
date: 2012-06-01 00:00:00.000000000Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rack
|
@@ -30,23 +30,23 @@ dependencies:
|
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: '0'
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
|
-
name:
|
33
|
+
name: faye-websocket
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
35
35
|
none: false
|
36
36
|
requirements:
|
37
|
-
- -
|
37
|
+
- - ! '>='
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0
|
39
|
+
version: '0'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
none: false
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0
|
47
|
+
version: '0'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
49
|
+
name: thin
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
@@ -62,14 +62,14 @@ dependencies:
|
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
|
-
name:
|
65
|
+
name: rake
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
68
68
|
requirements:
|
69
69
|
- - ! '>='
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0'
|
72
|
-
type: :
|
72
|
+
type: :development
|
73
73
|
prerelease: false
|
74
74
|
version_requirements: !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '0'
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
81
|
+
name: rails
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
@@ -94,7 +94,7 @@ dependencies:
|
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
96
|
- !ruby/object:Gem::Dependency
|
97
|
-
name:
|
97
|
+
name: sqlite3
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
99
99
|
none: false
|
100
100
|
requirements:
|
@@ -110,7 +110,7 @@ dependencies:
|
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
113
|
+
name: rspec-rails
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
none: false
|
116
116
|
requirements:
|
@@ -128,16 +128,20 @@ dependencies:
|
|
128
128
|
description: Seamless Ruby on Rails websocket integration.
|
129
129
|
email:
|
130
130
|
- dknox@threedotloft.com
|
131
|
-
executables:
|
131
|
+
executables:
|
132
|
+
- thin-socketrails
|
132
133
|
extensions: []
|
133
134
|
extra_rdoc_files: []
|
134
135
|
files:
|
135
136
|
- .gitignore
|
137
|
+
- .rspec
|
138
|
+
- .travis.yml
|
136
139
|
- Gemfile
|
137
140
|
- Gemfile.lock
|
138
141
|
- MIT-LICENSE
|
139
142
|
- README.md
|
140
143
|
- Rakefile
|
144
|
+
- bin/thin-socketrails
|
141
145
|
- config/routes.rb
|
142
146
|
- lib/websocket-rails.rb
|
143
147
|
- lib/websocket_rails/base_controller.rb
|
@@ -145,44 +149,52 @@ files:
|
|
145
149
|
- lib/websocket_rails/data_store.rb
|
146
150
|
- lib/websocket_rails/dispatcher.rb
|
147
151
|
- lib/websocket_rails/engine.rb
|
148
|
-
- lib/websocket_rails/
|
149
|
-
- lib/websocket_rails/extensions/websocket_rack.rb
|
152
|
+
- lib/websocket_rails/events.rb
|
150
153
|
- lib/websocket_rails/version.rb
|
151
|
-
-
|
152
|
-
-
|
153
|
-
-
|
154
|
-
-
|
155
|
-
-
|
156
|
-
-
|
157
|
-
-
|
158
|
-
-
|
159
|
-
-
|
160
|
-
-
|
161
|
-
-
|
162
|
-
-
|
163
|
-
-
|
164
|
-
-
|
165
|
-
-
|
166
|
-
-
|
167
|
-
-
|
168
|
-
-
|
169
|
-
-
|
170
|
-
-
|
171
|
-
-
|
172
|
-
-
|
173
|
-
-
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
177
|
-
-
|
178
|
-
-
|
179
|
-
-
|
180
|
-
-
|
181
|
-
-
|
182
|
-
-
|
183
|
-
-
|
184
|
-
-
|
185
|
-
-
|
154
|
+
- spec/dummy/Rakefile
|
155
|
+
- spec/dummy/app/controllers/application_controller.rb
|
156
|
+
- spec/dummy/app/controllers/chat_controller.rb
|
157
|
+
- spec/dummy/app/helpers/application_helper.rb
|
158
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
159
|
+
- spec/dummy/config.ru
|
160
|
+
- spec/dummy/config/application.rb
|
161
|
+
- spec/dummy/config/boot.rb
|
162
|
+
- spec/dummy/config/database.yml
|
163
|
+
- spec/dummy/config/environment.rb
|
164
|
+
- spec/dummy/config/environments/development.rb
|
165
|
+
- spec/dummy/config/environments/production.rb
|
166
|
+
- spec/dummy/config/environments/test.rb
|
167
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
168
|
+
- spec/dummy/config/initializers/events.rb
|
169
|
+
- spec/dummy/config/initializers/inflections.rb
|
170
|
+
- spec/dummy/config/initializers/mime_types.rb
|
171
|
+
- spec/dummy/config/initializers/secret_token.rb
|
172
|
+
- spec/dummy/config/initializers/session_store.rb
|
173
|
+
- spec/dummy/config/locales/en.yml
|
174
|
+
- spec/dummy/config/routes.rb
|
175
|
+
- spec/dummy/db/test.sqlite3
|
176
|
+
- spec/dummy/log/development.log
|
177
|
+
- spec/dummy/log/production.log
|
178
|
+
- spec/dummy/log/server.log
|
179
|
+
- spec/dummy/log/test.log
|
180
|
+
- spec/dummy/public/404.html
|
181
|
+
- spec/dummy/public/422.html
|
182
|
+
- spec/dummy/public/500.html
|
183
|
+
- spec/dummy/public/favicon.ico
|
184
|
+
- spec/dummy/public/javascripts/application.js
|
185
|
+
- spec/dummy/public/javascripts/controls.js
|
186
|
+
- spec/dummy/public/javascripts/dragdrop.js
|
187
|
+
- spec/dummy/public/javascripts/effects.js
|
188
|
+
- spec/dummy/public/javascripts/prototype.js
|
189
|
+
- spec/dummy/public/javascripts/rails.js
|
190
|
+
- spec/dummy/public/stylesheets/.gitkeep
|
191
|
+
- spec/dummy/script/rails
|
192
|
+
- spec/spec_helper.rb
|
193
|
+
- spec/support/mock_web_socket.rb
|
194
|
+
- spec/unit/connection_manager_spec.rb
|
195
|
+
- spec/unit/data_store_spec.rb
|
196
|
+
- spec/unit/dispatcher_spec.rb
|
197
|
+
- spec/unit/events_spec.rb
|
186
198
|
- websocket-rails.gemspec
|
187
199
|
homepage: https://github.com/DanKnox/websocket-rails
|
188
200
|
licenses: []
|
@@ -198,7 +210,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
198
210
|
version: '0'
|
199
211
|
segments:
|
200
212
|
- 0
|
201
|
-
hash: -
|
213
|
+
hash: -1264610493169323064
|
202
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
215
|
none: false
|
204
216
|
requirements:
|
@@ -207,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
219
|
version: '0'
|
208
220
|
segments:
|
209
221
|
- 0
|
210
|
-
hash: -
|
222
|
+
hash: -1264610493169323064
|
211
223
|
requirements: []
|
212
224
|
rubyforge_project:
|
213
225
|
rubygems_version: 1.8.19
|