pusher_listener 0.0.1
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/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +41 -0
- data/Rakefile +1 -0
- data/lib/pusher_listener.rb +21 -0
- data/lib/pusher_listener/client.rb +45 -0
- data/lib/pusher_listener/disconnects_socket.rb +10 -0
- data/lib/pusher_listener/handles_socket_error.rb +17 -0
- data/lib/pusher_listener/reconnects_socket.rb +12 -0
- data/lib/pusher_listener/version.rb +3 -0
- data/pusher_listener.gemspec +27 -0
- data/spec/lib/pusher_listener/client_spec.rb +67 -0
- data/spec/lib/pusher_listener/disconnects_socket_spec.rb +25 -0
- data/spec/lib/pusher_listener/handles_socket_error_spec.rb +49 -0
- data/spec/lib/pusher_listener/reconnects_socket_spec.rb +45 -0
- data/spec/lib/pusher_listener_spec.rb +16 -0
- data/spec/spec_helper.rb +1 -0
- metadata +140 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c714600d331ba7746deb0734dd42bf0dfc8e8e80
|
4
|
+
data.tar.gz: 10ea54bf869c8aba8af9ca6ee1b426241231a3bc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d5282a469c315008b4b7ddebe2dfd2e3cfcafbf22001bd965ae114f5e5d92a5b48ab6cd865c1be5e6e99ee391b1ab8b341f83355cb157133699abdb3fe19a9c7
|
7
|
+
data.tar.gz: 3b702a69c644e58bb38daa595cd27d599569b845c063beda4b8ee18703dc4fa84ade0761896653c9d2836a48ffbc2227b854f7e91bf9a73d411f35d0f32231e0
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Ramon Tayag
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# PusherListener
|
2
|
+
|
3
|
+
Wrapper around PusherClient that reconnects when there is an error
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'pusher_listener'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install pusher_listener
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
client = PusherListener::Client.new(
|
23
|
+
key: 'pusher_key',
|
24
|
+
secret: 'pusher_secret',
|
25
|
+
encrypted: true
|
26
|
+
)
|
27
|
+
|
28
|
+
client.when('some_channel', 'some_event') do |data|
|
29
|
+
puts "do something with #{data}"
|
30
|
+
end
|
31
|
+
|
32
|
+
client.start # loops forever since this is meant to be run in a daemon
|
33
|
+
```
|
34
|
+
|
35
|
+
## Contributing
|
36
|
+
|
37
|
+
1. Fork it
|
38
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
39
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
40
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
41
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "logger"
|
2
|
+
require "pusher-client"
|
3
|
+
require "pusher_listener/version"
|
4
|
+
require "pusher_listener/client"
|
5
|
+
require "pusher_listener/handles_socket_error"
|
6
|
+
require "pusher_listener/reconnects_socket"
|
7
|
+
require "pusher_listener/disconnects_socket"
|
8
|
+
|
9
|
+
module PusherListener
|
10
|
+
|
11
|
+
def self.logger= logger
|
12
|
+
@@logger = logger
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.logger
|
16
|
+
return @@logger if defined? @@logger
|
17
|
+
$stdout.sync = true
|
18
|
+
@@logger = Logger.new($stdout)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module PusherListener
|
2
|
+
class Client
|
3
|
+
|
4
|
+
extend Forwardable
|
5
|
+
def_delegator :PusherListener, :logger
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
@key = options.fetch(:key)
|
9
|
+
@secret = options.fetch(:secret)
|
10
|
+
@encrypted = options.fetch(:encrypted)
|
11
|
+
end
|
12
|
+
|
13
|
+
def when(channel_name, event_name, &block)
|
14
|
+
socket[channel_name].bind(event_name, &block)
|
15
|
+
end
|
16
|
+
|
17
|
+
def start(will_loop=true)
|
18
|
+
socket.bind('pusher:connection_established',
|
19
|
+
&method(:log_connection_established))
|
20
|
+
|
21
|
+
socket.bind('pusher:error', &method(:handle_error))
|
22
|
+
|
23
|
+
socket.connect(true)
|
24
|
+
|
25
|
+
loop { sleep 1 } if will_loop
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def log_connection_established(data)
|
31
|
+
logger.info "[#{Time.now}] - *** Waiting for events ***"
|
32
|
+
end
|
33
|
+
|
34
|
+
def handle_error(data)
|
35
|
+
HandlesSocketError.for(socket, data)
|
36
|
+
end
|
37
|
+
|
38
|
+
def socket
|
39
|
+
@socket ||= PusherClient::Socket.new(@key,
|
40
|
+
secret: @secret,
|
41
|
+
encrypted: @encrypted)
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module PusherListener
|
2
|
+
class HandlesSocketError
|
3
|
+
|
4
|
+
def self.execute(socket, data)
|
5
|
+
message = data.fetch("message")
|
6
|
+
code = data.fetch("code")
|
7
|
+
|
8
|
+
case code
|
9
|
+
when 4100; ReconnectsSocket.execute(socket, 1)
|
10
|
+
when 4200, 4201, 4202; ReconnectsSocket.execute(socket)
|
11
|
+
else
|
12
|
+
raise ArgumentError, "Pusher error: #{message} (code: #{code})"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'pusher_listener/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "pusher_listener"
|
8
|
+
spec.version = PusherListener::VERSION
|
9
|
+
spec.authors = ["Ramon Tayag", "Marc Ignacio"]
|
10
|
+
spec.email = ["ramon@aelogica.com", "marc@aelogica.com"]
|
11
|
+
spec.description = %q{Wrapper around PusherClient that reconnects when there is an error}
|
12
|
+
spec.summary = %q{Wrapper around PusherClient that reconnects when there is an error}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "pusher-client", "~> 0.4.0"
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.1.1"
|
25
|
+
spec.add_development_dependency "rspec", "~> 2.14.0"
|
26
|
+
spec.add_development_dependency "pry", "~> 0.9.12.4"
|
27
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module PusherListener
|
4
|
+
describe Client do
|
5
|
+
let(:client) do
|
6
|
+
described_class.new(key: 'app_key',
|
7
|
+
secret: 'secret',
|
8
|
+
encrypted: false)
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:logger) do
|
12
|
+
logger = Logger.new(STDOUT)
|
13
|
+
logger.level = 5
|
14
|
+
logger
|
15
|
+
end
|
16
|
+
|
17
|
+
before do
|
18
|
+
@socket = PusherClient::Socket.new('app_key',
|
19
|
+
secret: 'secret',
|
20
|
+
encrypted: false)
|
21
|
+
PusherClient.logger = logger
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#when" do
|
25
|
+
let(:block) { proc {|data| @block_called = true } }
|
26
|
+
|
27
|
+
before do
|
28
|
+
@block_called = false
|
29
|
+
PusherClient::Socket.stub(:new).
|
30
|
+
with('app_key', secret: 'secret', encrypted: false).
|
31
|
+
and_return(@socket)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "creates a channel" do
|
35
|
+
client.when('channel_name', 'event_name', &block)
|
36
|
+
@socket.send(:send_local_event, 'event_name', 'data', 'channel_name')
|
37
|
+
expect(@block_called).to be_true
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#start" do
|
42
|
+
before do
|
43
|
+
PusherClient::Socket.stub(:new).
|
44
|
+
with('app_key', secret: 'secret', encrypted: false).
|
45
|
+
and_return(@socket)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "handles connection issues and starts a socket connection" do
|
49
|
+
@socket.should_receive(:connect).with(true)
|
50
|
+
|
51
|
+
client.start(false)
|
52
|
+
|
53
|
+
HandlesSocketError.should_receive(:for).with(@socket, 'data')
|
54
|
+
@socket.send(:send_local_event, 'pusher:error', 'data', '')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "#logger" do
|
59
|
+
it "should be delegated to PusherListener module" do
|
60
|
+
PusherListener.should_receive(:logger)
|
61
|
+
client.logger
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module PusherListener
|
4
|
+
describe DisconnectsSocket, ".execute" do
|
5
|
+
|
6
|
+
let(:socket) { double(connected: connected) }
|
7
|
+
|
8
|
+
context "socket is connected" do
|
9
|
+
let(:connected) { true }
|
10
|
+
it "disconnects the socket" do
|
11
|
+
socket.should_receive(:disconnect)
|
12
|
+
described_class.execute(socket)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "socket is not connected" do
|
17
|
+
let(:connected) { false }
|
18
|
+
it "does not disconnect the socket" do
|
19
|
+
socket.should_not_receive(:disconnect)
|
20
|
+
described_class.execute(socket)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module PusherListener
|
4
|
+
describe HandlesSocketError, ".execute" do
|
5
|
+
|
6
|
+
let(:socket) { double }
|
7
|
+
let(:data) { {"code" => code, "message" => "Error message"} }
|
8
|
+
|
9
|
+
context "code is 4100" do
|
10
|
+
let(:code) { 4100 }
|
11
|
+
it "reconnects with a 1 second delay" do
|
12
|
+
ReconnectsSocket.should_receive(:execute).with(socket, 1)
|
13
|
+
described_class.execute(socket, data)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "code is 4200" do
|
18
|
+
let(:code) { 4200 }
|
19
|
+
it "reconnects immediately" do
|
20
|
+
ReconnectsSocket.should_receive(:execute).with(socket)
|
21
|
+
described_class.execute(socket, data)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "code is 4201" do
|
26
|
+
let(:code) { 4201 }
|
27
|
+
it "reconnects immediately" do
|
28
|
+
ReconnectsSocket.should_receive(:execute).with(socket)
|
29
|
+
described_class.execute(socket, data)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "code is 4202" do
|
34
|
+
let(:code) { 4202 }
|
35
|
+
it "reconnects immediately" do
|
36
|
+
ReconnectsSocket.should_receive(:execute).with(socket)
|
37
|
+
described_class.execute(socket, data)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "code is none of the above" do
|
42
|
+
let(:code) { 999 }
|
43
|
+
it "raises an error" do
|
44
|
+
expect { described_class.execute(socket, data) }.to raise_error
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module PusherListener
|
4
|
+
describe ReconnectsSocket, ".execute" do
|
5
|
+
|
6
|
+
let(:socket) { double }
|
7
|
+
|
8
|
+
describe "delay is not set" do
|
9
|
+
it "disconnects then connects immediately" do
|
10
|
+
DisconnectsSocket.should_receive(:execute).with(socket).ordered
|
11
|
+
described_class.should_not_receive(:sleep)
|
12
|
+
socket.should_receive(:connect).ordered
|
13
|
+
described_class.execute(socket)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "delay is nil" do
|
18
|
+
it "disconnects then connects immediately" do
|
19
|
+
DisconnectsSocket.should_receive(:execute).with(socket).ordered
|
20
|
+
described_class.should_not_receive(:sleep)
|
21
|
+
socket.should_receive(:connect).ordered
|
22
|
+
described_class.execute(socket, nil)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "delay is 0" do
|
27
|
+
it "disconnects then connects immediately" do
|
28
|
+
DisconnectsSocket.should_receive(:execute).with(socket).ordered
|
29
|
+
described_class.should_not_receive(:sleep)
|
30
|
+
socket.should_receive(:connect).ordered
|
31
|
+
described_class.execute(socket, 0)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "delay is 3" do
|
36
|
+
it "disconnects, sleeps, and connects" do
|
37
|
+
DisconnectsSocket.should_receive(:execute).with(socket).ordered
|
38
|
+
described_class.should_receive(:sleep).with(3).ordered
|
39
|
+
socket.should_receive(:connect).ordered
|
40
|
+
described_class.execute(socket, 3)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe PusherListener, ".logger" do
|
4
|
+
it "sets the logger to stdout by default" do
|
5
|
+
logger = double
|
6
|
+
Logger.stub(:new).with($stdout) { logger }
|
7
|
+
expect(PusherListener.logger).to eq(logger)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "can set into a custom logger" do
|
11
|
+
custom_logger = double
|
12
|
+
PusherListener.logger = custom_logger
|
13
|
+
expect(PusherListener.logger).to eq(custom_logger)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "pusher_listener"
|
metadata
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pusher_listener
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ramon Tayag
|
8
|
+
- Marc Ignacio
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: pusher-client
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 0.4.0
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 0.4.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: bundler
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.3'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.3'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rake
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 10.1.1
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 10.1.1
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rspec
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 2.14.0
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.14.0
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: pry
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.9.12.4
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 0.9.12.4
|
84
|
+
description: Wrapper around PusherClient that reconnects when there is an error
|
85
|
+
email:
|
86
|
+
- ramon@aelogica.com
|
87
|
+
- marc@aelogica.com
|
88
|
+
executables: []
|
89
|
+
extensions: []
|
90
|
+
extra_rdoc_files: []
|
91
|
+
files:
|
92
|
+
- .gitignore
|
93
|
+
- Gemfile
|
94
|
+
- LICENSE.txt
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- lib/pusher_listener.rb
|
98
|
+
- lib/pusher_listener/client.rb
|
99
|
+
- lib/pusher_listener/disconnects_socket.rb
|
100
|
+
- lib/pusher_listener/handles_socket_error.rb
|
101
|
+
- lib/pusher_listener/reconnects_socket.rb
|
102
|
+
- lib/pusher_listener/version.rb
|
103
|
+
- pusher_listener.gemspec
|
104
|
+
- spec/lib/pusher_listener/client_spec.rb
|
105
|
+
- spec/lib/pusher_listener/disconnects_socket_spec.rb
|
106
|
+
- spec/lib/pusher_listener/handles_socket_error_spec.rb
|
107
|
+
- spec/lib/pusher_listener/reconnects_socket_spec.rb
|
108
|
+
- spec/lib/pusher_listener_spec.rb
|
109
|
+
- spec/spec_helper.rb
|
110
|
+
homepage: ''
|
111
|
+
licenses:
|
112
|
+
- MIT
|
113
|
+
metadata: {}
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options: []
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
requirements: []
|
129
|
+
rubyforge_project:
|
130
|
+
rubygems_version: 2.0.3
|
131
|
+
signing_key:
|
132
|
+
specification_version: 4
|
133
|
+
summary: Wrapper around PusherClient that reconnects when there is an error
|
134
|
+
test_files:
|
135
|
+
- spec/lib/pusher_listener/client_spec.rb
|
136
|
+
- spec/lib/pusher_listener/disconnects_socket_spec.rb
|
137
|
+
- spec/lib/pusher_listener/handles_socket_error_spec.rb
|
138
|
+
- spec/lib/pusher_listener/reconnects_socket_spec.rb
|
139
|
+
- spec/lib/pusher_listener_spec.rb
|
140
|
+
- spec/spec_helper.rb
|