Skip to content

Commit

Permalink
Fix #101: protected method close called with EventMachine.
Browse files Browse the repository at this point in the history
  • Loading branch information
dblock committed Aug 19, 2016
1 parent bf9f2af commit 0fb272e
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 15 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
### 0.7.7 (Next)

* [101](https://github.com/dblock/slack-ruby-client/issues/101): Fix: protected method `close` called with EventMachine - [@dblock](https://github.com/dblock).
* Your contribution here.

### 0.7.6 (8/7/2016)
Expand Down
1 change: 1 addition & 0 deletions lib/slack/real_time/concurrency/celluloid.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ def run_loop
def close
@closing = true
driver.close
super
end

def read
Expand Down
8 changes: 4 additions & 4 deletions lib/slack/real_time/socket.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ def start_async(_client)
fail NotImplementedError, "Expected #{self.class} to implement #{__method__}."
end

def close
@driver = nil
end

protected

def addr
Expand All @@ -77,10 +81,6 @@ def port
def connect
fail NotImplementedError, "Expected #{self.class} to implement #{__method__}."
end

def close(_event)
@driver = nil
end
end
end
end
8 changes: 2 additions & 6 deletions spec/slack/real_time/concurrency/celluloid_spec.rb
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
require 'spec_helper'
require_relative './it_behaves_like_a_realtime_socket'

begin
RSpec.describe Slack::RealTime::Concurrency::Celluloid::Socket do
it_behaves_like 'a realtime socket'
context 'with url' do
let(:url) { 'wss://echo.websocket.org/websocket/xyz' }
let(:logger) { ::Logger.new(STDOUT) }
subject(:socket) { described_class.new(url, ping: 42, logger: logger) }
let(:driver) { WebSocket::Driver::Client }
let(:ws) { double(driver) }

describe '#initialize' do
it 'sets url' do
expect(socket.url).to eq url
end
end

describe '#connect!' do
pending 'connects'
pending 'pings every 30s'
Expand Down
7 changes: 2 additions & 5 deletions spec/slack/real_time/concurrency/eventmachine_spec.rb
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
require 'spec_helper'
require_relative './it_behaves_like_a_realtime_socket'

begin
RSpec.describe Slack::RealTime::Concurrency::Eventmachine::Socket do
it_behaves_like 'a realtime socket'
context 'with url' do
let(:url) { 'wss://ms174.slack-msgs.com/websocket/xyz' }
let(:logger) { ::Logger.new($stdout) }
let(:socket) { described_class.new(url, ping: 42, logger: logger) }
let(:ws) { double(Faye::WebSocket::Client) }
describe '#initialize' do
it 'sets url' do
expect(socket.url).to eq url
end
end
describe '#connect!' do
before do
allow(ws).to receive(:on).with(:close)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
require 'spec_helper'

RSpec.shared_examples_for 'a realtime socket' do
let(:url) { 'wss://ms174.slack-msgs.com/websocket/xyz' }
let(:logger) { ::Logger.new($stdout) }
let(:socket) { described_class.new(url, ping: 42, logger: logger) }
describe '#initialize' do
it 'sets url' do
expect(socket.url).to eq url
end
end
describe 'api' do
[:start_sync, :start_sync, :disconnect!, :connect!, :connected?, :send_data, :close].each do |m|
it m do
expect(socket).to respond_to(m)
end
end
end
end

0 comments on commit 0fb272e

Please sign in to comment.