litecable 0.6.0 → 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 +4 -4
- data/CHANGELOG.md +20 -1
- data/LICENSE.txt +1 -1
- data/README.md +24 -22
- data/lib/lite_cable.rb +22 -2
- data/lib/lite_cable/anycable.rb +14 -12
- data/lib/lite_cable/broadcast_adapters.rb +35 -0
- data/lib/lite_cable/broadcast_adapters/any_cable.rb +11 -0
- data/lib/lite_cable/broadcast_adapters/base.rb +17 -0
- data/lib/lite_cable/broadcast_adapters/memory.rb +11 -0
- data/lib/lite_cable/config.rb +5 -4
- data/lib/lite_cable/connection/subscriptions.rb +2 -2
- data/lib/lite_cable/server.rb +0 -6
- data/lib/lite_cable/server/client_socket/base.rb +9 -15
- data/lib/lite_cable/version.rb +1 -1
- metadata +18 -76
- data/.gem_release.yml +0 -3
- data/.gitignore +0 -40
- data/.rubocop.yml +0 -53
- data/.travis.yml +0 -16
- data/Gemfile +0 -4
- data/Rakefile +0 -10
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/examples/sinatra/Gemfile +0 -19
- data/examples/sinatra/Procfile +0 -3
- data/examples/sinatra/README.md +0 -35
- data/examples/sinatra/app.rb +0 -53
- data/examples/sinatra/assets/app.css +0 -169
- data/examples/sinatra/assets/cable.js +0 -584
- data/examples/sinatra/assets/reset.css +0 -223
- data/examples/sinatra/chat.rb +0 -40
- data/examples/sinatra/config.ru +0 -21
- data/examples/sinatra/config/environment.rb +0 -18
- data/examples/sinatra/views/index.slim +0 -8
- data/examples/sinatra/views/layout.slim +0 -15
- data/examples/sinatra/views/login.slim +0 -8
- data/examples/sinatra/views/resetcss.slim +0 -224
- data/examples/sinatra/views/room.slim +0 -68
- data/litecable.gemspec +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47a04414eade53832c4b900305ca3a034999724c0cabd6aceacb908192a6124f
|
4
|
+
data.tar.gz: 24c67d2cacbb5f64b5b7d63293c7fdbe143797d0102b732983fc78028469dfc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb63ada090f884f750828b7c116d1066a020c87ab043d929e4ad46b035299c95972acf1d458813a34da797273e0656fc7613977cfef24c6e0765a7a8dece9a6a
|
7
|
+
data.tar.gz: 75314e320e2ed5f18e34c4038d467aef14e73f9b0e4fe01f61955369a52ee28e246e62662a94c3e1d1b9f7ea9999049f8d58e5f7af80479fc88a97b91055720e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## 0.7.0 (2020-01-07)
|
4
|
+
|
5
|
+
- Refactor AnyCable integration ([@palkan][])
|
6
|
+
|
7
|
+
Now you only need to set AnyCable broadcast adapter:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
LiteCable.broadcast_adapter = :any_cable
|
11
|
+
```
|
12
|
+
|
13
|
+
```sh
|
14
|
+
# or via env/config
|
15
|
+
LITECABLE_BROADCAST_ADAPTER=any_cable ruby my_app.rb
|
16
|
+
```
|
17
|
+
|
18
|
+
- Adapterize broadcast adapters ([@palkan][])
|
19
|
+
|
20
|
+
- Drop Ruby 2.4 support ([palkan][])
|
21
|
+
|
3
22
|
## 0.6.0 (2019-04-12) 🚀
|
4
23
|
|
5
24
|
- Drop Ruby 2.3 support ([@palkan][])
|
@@ -10,7 +29,7 @@
|
|
10
29
|
|
11
30
|
## 0.4.1 (2017-02-04)
|
12
31
|
|
13
|
-
- Use `websocket-ruby` with
|
32
|
+
- Use `websocket-ruby` with sub-protocols support ([@palkan][])
|
14
33
|
|
15
34
|
## 0.4.0 (2017-01-29)
|
16
35
|
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
[](https://rubygems.org/gems/litecable)
|
1
|
+
[](https://rubygems.org/gems/litecable)
|
2
|
+
[](https://github.com/palkan/litecable/actions)
|
2
3
|
|
3
4
|
# Lite Cable
|
4
5
|
|
@@ -25,17 +26,11 @@ Add this line to your application's Gemfile:
|
|
25
26
|
gem "litecable"
|
26
27
|
```
|
27
28
|
|
28
|
-
And
|
29
|
-
|
30
|
-
$ bundle
|
31
|
-
|
32
|
-
Or install it yourself as:
|
33
|
-
|
34
|
-
$ gem install litecable
|
29
|
+
And run `bundle install`.
|
35
30
|
|
36
31
|
## Usage
|
37
32
|
|
38
|
-
Please, checkout [Action Cable guides](http://guides.rubyonrails.org/action_cable_overview.html) for general information. Lite Cable aims to be compatible with Action Cable as much as possible without the loss of simplicity and
|
33
|
+
Please, checkout [Action Cable guides](http://guides.rubyonrails.org/action_cable_overview.html) for general information. Lite Cable aims to be compatible with Action Cable as much as possible without the loss of simplicity and _lightness_.
|
39
34
|
|
40
35
|
You can use Action Cable javascript client without any change (precompiled version can be found [here](https://github.com/palkan/litecable/tree/master/examples/sinatra/assets/cable.js)).
|
41
36
|
|
@@ -83,24 +78,32 @@ end
|
|
83
78
|
|
84
79
|
### Using with AnyCable
|
85
80
|
|
86
|
-
Lite Cable is AnyCable-compatible out-of-the-box
|
81
|
+
Lite Cable is AnyCable-compatible out-of-the-box:
|
82
|
+
|
83
|
+
- Set broadcast adapter to AnyCable:
|
87
84
|
|
88
85
|
```ruby
|
89
|
-
|
86
|
+
LiteCable.broadcast_adapter = :any_cable
|
87
|
+
```
|
90
88
|
|
91
|
-
|
92
|
-
require "rack"
|
93
|
-
require "anycable"
|
89
|
+
You can also do this via configuration, e.g., env var (`LITECABLE_BROADCAST_ADAPTER=any_cable`) or `broadcast_adapter: any_cable` in a YAML config.
|
94
90
|
|
95
|
-
|
96
|
-
LiteCable.anycable!
|
91
|
+
- Configure connection factory:
|
97
92
|
|
98
|
-
|
93
|
+
```ruby
|
94
|
+
AnyCable.connection_factory = MyApp::Connection
|
95
|
+
```
|
96
|
+
|
97
|
+
Then run AnyCable along with the app:
|
99
98
|
|
100
|
-
|
99
|
+
```sh
|
100
|
+
bundle exec anycable
|
101
|
+
|
102
|
+
# add -r option to load the app if it's not ./config/anycable.rb or ./config/environment.rb
|
103
|
+
bundle exec anycable -r ./my_app.rb
|
101
104
|
```
|
102
105
|
|
103
|
-
|
106
|
+
See [Sinatra example](https://github.com/palkan/litecable/tree/master/examples/sinatra) for more.
|
104
107
|
|
105
108
|
### Configuration
|
106
109
|
|
@@ -120,9 +123,8 @@ See [config](https://github.com/palkan/litecable/blob/master/lib/lite_cable/conf
|
|
120
123
|
|
121
124
|
## Contributing
|
122
125
|
|
123
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
126
|
+
Bug reports and pull requests are welcome on GitHub at [https://github.com/palkan/litecable](https://github.com/palkan/litecable).
|
124
127
|
|
125
128
|
## License
|
126
129
|
|
127
|
-
The gem is available as open source under the terms of the [MIT License](
|
128
|
-
|
130
|
+
The gem is available as open source under the terms of the [MIT License](./LICENSE.txt).
|
data/lib/lite_cable.rb
CHANGED
@@ -15,6 +15,7 @@ module LiteCable
|
|
15
15
|
require "lite_cable/channel"
|
16
16
|
require "lite_cable/coders"
|
17
17
|
require "lite_cable/config"
|
18
|
+
require "lite_cable/broadcast_adapters"
|
18
19
|
require "lite_cable/anycable"
|
19
20
|
|
20
21
|
class << self
|
@@ -23,8 +24,27 @@ module LiteCable
|
|
23
24
|
end
|
24
25
|
|
25
26
|
# Broadcast encoded message to the stream
|
26
|
-
def broadcast(
|
27
|
-
|
27
|
+
def broadcast(stream, message, coder: LiteCable.config.coder)
|
28
|
+
broadcast_adapter.broadcast(stream, message, coder: coder)
|
29
|
+
end
|
30
|
+
|
31
|
+
def broadcast_adapter
|
32
|
+
return @broadcast_adapter if defined?(@broadcast_adapter)
|
33
|
+
self.broadcast_adapter = LiteCable.config.broadcast_adapter.to_sym
|
34
|
+
@broadcast_adapter
|
35
|
+
end
|
36
|
+
|
37
|
+
def broadcast_adapter=(adapter)
|
38
|
+
if adapter.is_a?(Symbol) || adapter.is_a?(Array)
|
39
|
+
adapter = BroadcastAdapters.lookup_adapter(adapter)
|
40
|
+
end
|
41
|
+
|
42
|
+
unless adapter.respond_to?(:broadcast)
|
43
|
+
raise ArgumentError, "BroadcastAdapter must implement #broadcast method. " \
|
44
|
+
"#{adapter.class} doesn't implement it."
|
45
|
+
end
|
46
|
+
|
47
|
+
@broadcast_adapter = adapter
|
28
48
|
end
|
29
49
|
end
|
30
50
|
end
|
data/lib/lite_cable/anycable.rb
CHANGED
@@ -3,14 +3,6 @@
|
|
3
3
|
module LiteCable # :nodoc:
|
4
4
|
# AnyCable extensions
|
5
5
|
module AnyCable
|
6
|
-
module Broadcasting # :nodoc:
|
7
|
-
def broadcast(stream, message, coder: nil)
|
8
|
-
coder ||= LiteCable.config.coder
|
9
|
-
# FIXME: after anycable 0.6.0 release
|
10
|
-
Anycable.broadcast stream, coder.encode(message)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
6
|
module Connection # :nodoc:
|
15
7
|
def self.extended(base)
|
16
8
|
base.prepend InstanceMethods
|
@@ -20,9 +12,6 @@ module LiteCable # :nodoc:
|
|
20
12
|
new(socket, options)
|
21
13
|
end
|
22
14
|
|
23
|
-
# Backward compatibility with AnyCable <= 0.4
|
24
|
-
alias create call
|
25
|
-
|
26
15
|
module InstanceMethods # :nodoc:
|
27
16
|
def initialize(socket, subscriptions: nil, **hargs)
|
28
17
|
super(socket, **hargs)
|
@@ -64,6 +53,19 @@ module LiteCable # :nodoc:
|
|
64
53
|
# Patch Lite Cable with AnyCable functionality
|
65
54
|
def self.anycable!
|
66
55
|
LiteCable::Connection::Base.extend LiteCable::AnyCable::Connection
|
67
|
-
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
if defined?(AnyCable)
|
60
|
+
AnyCable.configure_server do
|
61
|
+
# Make sure broadcast adapter is valid
|
62
|
+
require "lite_cable/broadcast_adapters/any_cable"
|
63
|
+
unless LiteCable::BroadcastAdapters::AnyCable === LiteCable.broadcast_adapter
|
64
|
+
raise "You should use :any_cable broadcast adapter (current: #{LiteCable.broadcast_adapter.class}). " \
|
65
|
+
"Set it via LITECABLE_BROADCAST_ADAPTER=any_cable or in the code/YML."
|
66
|
+
end
|
67
|
+
|
68
|
+
# Turn AnyCable compatibility mode for anycable RPC server automatically
|
69
|
+
LiteCable.anycable!
|
68
70
|
end
|
69
71
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lite_cable/broadcast_adapters/base"
|
4
|
+
|
5
|
+
module LiteCable
|
6
|
+
module BroadcastAdapters # :nodoc:
|
7
|
+
module_function
|
8
|
+
|
9
|
+
# rubocop: disable Metrics/AbcSize, Metrics/MethodLength
|
10
|
+
def lookup_adapter(args)
|
11
|
+
adapter, options = Array(args)
|
12
|
+
path_to_adapter = "lite_cable/broadcast_adapters/#{adapter}"
|
13
|
+
adapter_class_name = adapter.to_s.split("_").map(&:capitalize).join
|
14
|
+
|
15
|
+
unless BroadcastAdapters.const_defined?(adapter_class_name, false)
|
16
|
+
begin
|
17
|
+
require path_to_adapter
|
18
|
+
rescue LoadError => e
|
19
|
+
# We couldn't require the adapter itself.
|
20
|
+
if e.path == path_to_adapter
|
21
|
+
raise e.class, "Couldn't load the '#{adapter}' broadcast adapter for LiteCable",
|
22
|
+
e.backtrace
|
23
|
+
# Bubbled up from the adapter require.
|
24
|
+
else
|
25
|
+
raise e.class, "Error loading the '#{adapter}' broadcast adapter for LiteCable",
|
26
|
+
e.backtrace
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
BroadcastAdapters.const_get(adapter_class_name, false).new(**(options || {}))
|
32
|
+
end
|
33
|
+
# rubocop: enable Metrics/AbcSize, Metrics/MethodLength
|
34
|
+
end
|
35
|
+
end
|
data/lib/lite_cable/config.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "anyway_config"
|
4
4
|
require "logger"
|
5
5
|
|
6
6
|
module LiteCable
|
@@ -12,8 +12,9 @@ module LiteCable
|
|
12
12
|
config_name :litecable
|
13
13
|
|
14
14
|
attr_config :logger,
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
coder: Coders::JSON,
|
16
|
+
broadcast_adapter: :memory,
|
17
|
+
identifier_coder: Coders::Raw,
|
18
|
+
log_level: Logger::INFO
|
18
19
|
end
|
19
20
|
end
|
@@ -53,9 +53,9 @@ module LiteCable
|
|
53
53
|
def execute_command(data)
|
54
54
|
command = data.delete("command")
|
55
55
|
case command
|
56
|
-
when "subscribe"
|
56
|
+
when "subscribe" then add(data["identifier"])
|
57
57
|
when "unsubscribe" then remove(data["identifier"])
|
58
|
-
when "message"
|
58
|
+
when "message" then perform_action(data["identifier"], data["data"])
|
59
59
|
else
|
60
60
|
raise UnknownCommandError, "Command not found #{command}"
|
61
61
|
end
|
data/lib/lite_cable/server.rb
CHANGED
@@ -15,12 +15,6 @@ module LiteCable
|
|
15
15
|
|
16
16
|
class << self
|
17
17
|
attr_accessor :subscribers_map
|
18
|
-
|
19
|
-
# Broadcast encoded message to the stream
|
20
|
-
def broadcast(stream, message, coder: nil)
|
21
|
-
coder ||= LiteCable.config.coder
|
22
|
-
subscribers_map.broadcast stream, message, coder
|
23
|
-
end
|
24
18
|
end
|
25
19
|
|
26
20
|
self.subscribers_map = SubscribersMap.new
|
@@ -17,10 +17,10 @@ module LiteCable
|
|
17
17
|
@version = version
|
18
18
|
@active = true
|
19
19
|
|
20
|
-
@open_handlers
|
20
|
+
@open_handlers = []
|
21
21
|
@message_handlers = []
|
22
|
-
@close_handlers
|
23
|
-
@error_handlers
|
22
|
+
@close_handlers = []
|
23
|
+
@error_handlers = []
|
24
24
|
|
25
25
|
@close_on_error = true
|
26
26
|
end
|
@@ -70,13 +70,11 @@ module LiteCable
|
|
70
70
|
@open_handlers.each(&:call)
|
71
71
|
each_frame do |data|
|
72
72
|
@message_handlers.each do |h|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
close if close_on_error
|
79
|
-
end
|
73
|
+
h.call(data)
|
74
|
+
rescue => e # rubocop: disable Style/RescueStandardError
|
75
|
+
log(:error, "Socket receive failed: #{e}")
|
76
|
+
@error_handlers.each { |eh| eh.call(e, data) }
|
77
|
+
close if close_on_error
|
80
78
|
end
|
81
79
|
end
|
82
80
|
ensure
|
@@ -137,11 +135,7 @@ module LiteCable
|
|
137
135
|
framebuffer = WebSocket::Frame::Incoming::Server.new(version: version)
|
138
136
|
|
139
137
|
while IO.select([socket])
|
140
|
-
|
141
|
-
data, _addrinfo = socket.recvfrom(2000)
|
142
|
-
else
|
143
|
-
data, _addrinfo = socket.readpartial(2000), socket.peeraddr
|
144
|
-
end
|
138
|
+
data = socket.respond_to?(:recv) ? socket.recv(2000) : socket.readpartial(2000)
|
145
139
|
break if data.empty?
|
146
140
|
|
147
141
|
framebuffer << data
|
data/lib/lite_cable/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: litecable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- palkan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anyway_config
|
@@ -72,26 +72,26 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
75
|
+
version: '1.1'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.
|
82
|
+
version: '1.1'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: puma
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '3.6'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '3.6'
|
97
97
|
- !ruby/object:Gem::Dependency
|
@@ -150,48 +150,6 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 0.3.8
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: rubocop
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: 0.65.0
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - "~>"
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 0.65.0
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: rubocop-md
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0.2'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0.2'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: standard
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - "~>"
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: 0.0.36
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: 0.0.36
|
195
153
|
- !ruby/object:Gem::Dependency
|
196
154
|
name: pry-byebug
|
197
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,35 +172,15 @@ executables: []
|
|
214
172
|
extensions: []
|
215
173
|
extra_rdoc_files: []
|
216
174
|
files:
|
217
|
-
- ".gem_release.yml"
|
218
|
-
- ".gitignore"
|
219
|
-
- ".rspec"
|
220
|
-
- ".rubocop.yml"
|
221
|
-
- ".travis.yml"
|
222
175
|
- CHANGELOG.md
|
223
|
-
- Gemfile
|
224
176
|
- LICENSE.txt
|
225
177
|
- README.md
|
226
|
-
- Rakefile
|
227
|
-
- bin/console
|
228
|
-
- bin/setup
|
229
|
-
- examples/sinatra/Gemfile
|
230
|
-
- examples/sinatra/Procfile
|
231
|
-
- examples/sinatra/README.md
|
232
|
-
- examples/sinatra/app.rb
|
233
|
-
- examples/sinatra/assets/app.css
|
234
|
-
- examples/sinatra/assets/cable.js
|
235
|
-
- examples/sinatra/assets/reset.css
|
236
|
-
- examples/sinatra/chat.rb
|
237
|
-
- examples/sinatra/config.ru
|
238
|
-
- examples/sinatra/config/environment.rb
|
239
|
-
- examples/sinatra/views/index.slim
|
240
|
-
- examples/sinatra/views/layout.slim
|
241
|
-
- examples/sinatra/views/login.slim
|
242
|
-
- examples/sinatra/views/resetcss.slim
|
243
|
-
- examples/sinatra/views/room.slim
|
244
178
|
- lib/lite_cable.rb
|
245
179
|
- lib/lite_cable/anycable.rb
|
180
|
+
- lib/lite_cable/broadcast_adapters.rb
|
181
|
+
- lib/lite_cable/broadcast_adapters/any_cable.rb
|
182
|
+
- lib/lite_cable/broadcast_adapters/base.rb
|
183
|
+
- lib/lite_cable/broadcast_adapters/memory.rb
|
246
184
|
- lib/lite_cable/channel.rb
|
247
185
|
- lib/lite_cable/channel/base.rb
|
248
186
|
- lib/lite_cable/channel/registry.rb
|
@@ -268,11 +206,15 @@ files:
|
|
268
206
|
- lib/lite_cable/server/subscribers_map.rb
|
269
207
|
- lib/lite_cable/version.rb
|
270
208
|
- lib/litecable.rb
|
271
|
-
- litecable.gemspec
|
272
209
|
homepage: https://github.com/palkan/litecable
|
273
210
|
licenses:
|
274
211
|
- MIT
|
275
|
-
metadata:
|
212
|
+
metadata:
|
213
|
+
bug_tracker_uri: http://github.com/palkan/litecable/issues
|
214
|
+
changelog_uri: https://github.com/palkan/litecable/blob/master/CHANGELOG.md
|
215
|
+
documentation_uri: http://github.com/palkan/litecable
|
216
|
+
homepage_uri: http://github.com/palkan/litecable
|
217
|
+
source_code_uri: http://github.com/palkan/litecable
|
276
218
|
post_install_message:
|
277
219
|
rdoc_options: []
|
278
220
|
require_paths:
|
@@ -281,14 +223,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
281
223
|
requirements:
|
282
224
|
- - ">="
|
283
225
|
- !ruby/object:Gem::Version
|
284
|
-
version: 2.
|
226
|
+
version: 2.5.0
|
285
227
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
286
228
|
requirements:
|
287
229
|
- - ">="
|
288
230
|
- !ruby/object:Gem::Version
|
289
231
|
version: '0'
|
290
232
|
requirements: []
|
291
|
-
rubygems_version: 3.0.
|
233
|
+
rubygems_version: 3.0.6
|
292
234
|
signing_key:
|
293
235
|
specification_version: 4
|
294
236
|
summary: Fat-free ActionCable implementation
|