anycable 0.5.2 → 0.6.4
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 +166 -2
- data/MIT-LICENSE +1 -1
- data/README.md +19 -60
- data/bin/anycable +13 -0
- data/bin/anycabled +30 -0
- data/lib/anycable.rb +69 -18
- data/lib/anycable/broadcast_adapters.rb +33 -0
- data/lib/anycable/broadcast_adapters/redis.rb +42 -0
- data/lib/anycable/cli.rb +329 -0
- data/lib/anycable/config.rb +93 -17
- data/lib/anycable/exceptions_handling.rb +37 -0
- data/lib/anycable/health_server.rb +52 -31
- data/lib/anycable/middleware.rb +19 -0
- data/lib/anycable/middleware_chain.rb +58 -0
- data/lib/anycable/rpc/rpc_pb.rb +1 -1
- data/lib/anycable/rpc/rpc_services_pb.rb +1 -1
- data/lib/anycable/rpc_handler.rb +77 -32
- data/lib/anycable/server.rb +132 -39
- data/lib/anycable/socket.rb +1 -1
- data/lib/anycable/version.rb +2 -2
- metadata +34 -59
- data/.gitignore +0 -40
- data/.hound.yml +0 -3
- data/.rubocop.yml +0 -71
- data/.travis.yml +0 -13
- data/Gemfile +0 -8
- data/Makefile +0 -5
- data/PITCHME.md +0 -139
- data/PITCHME.yaml +0 -1
- data/Rakefile +0 -8
- data/anycable.gemspec +0 -32
- data/assets/Memory3.png +0 -0
- data/assets/Memory5.png +0 -0
- data/assets/RTT3.png +0 -0
- data/assets/RTT5.png +0 -0
- data/assets/Scheme1.png +0 -0
- data/assets/Scheme2.png +0 -0
- data/assets/cpu_chart.gif +0 -0
- data/assets/cpu_chart2.gif +0 -0
- data/assets/evlms.png +0 -0
- data/benchmarks/.gitignore +0 -1
- data/benchmarks/2017-02-12.md +0 -308
- data/benchmarks/2018-03-04.md +0 -192
- data/benchmarks/2018-05-27-rpc-bench.md +0 -57
- data/benchmarks/HowTo.md +0 -23
- data/benchmarks/ansible.cfg +0 -9
- data/benchmarks/benchmark.yml +0 -67
- data/benchmarks/hosts +0 -5
- data/benchmarks/servers.yml +0 -36
- data/circle.yml +0 -8
- data/etc/bug_report_template.rb +0 -76
- data/lib/anycable/handler/exceptions_handling.rb +0 -43
- data/lib/anycable/pubsub.rb +0 -26
- data/protos/rpc.proto +0 -55
data/lib/anycable/socket.rb
CHANGED
data/lib/anycable/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anycable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.4
|
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-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anyway_config
|
@@ -16,60 +16,54 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.1.1
|
19
|
+
version: 1.4.2
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 1.1.1
|
26
|
+
version: 1.4.2
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: grpc
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version: '1.
|
33
|
+
version: '1.17'
|
40
34
|
type: :runtime
|
41
35
|
prerelease: false
|
42
36
|
version_requirements: !ruby/object:Gem::Requirement
|
43
37
|
requirements:
|
44
38
|
- - "~>"
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version: '1.
|
40
|
+
version: '1.17'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: redis
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
54
|
-
type: :
|
47
|
+
version: '4.0'
|
48
|
+
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
51
|
requirements:
|
58
52
|
- - ">="
|
59
53
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
54
|
+
version: '4.0'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: bundler
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
|
-
- - "
|
59
|
+
- - ">="
|
66
60
|
- !ruby/object:Gem::Version
|
67
61
|
version: '1'
|
68
62
|
type: :development
|
69
63
|
prerelease: false
|
70
64
|
version_requirements: !ruby/object:Gem::Requirement
|
71
65
|
requirements:
|
72
|
-
- - "
|
66
|
+
- - ">="
|
73
67
|
- !ruby/object:Gem::Version
|
74
68
|
version: '1'
|
75
69
|
- !ruby/object:Gem::Dependency
|
@@ -120,14 +114,14 @@ dependencies:
|
|
120
114
|
requirements:
|
121
115
|
- - "~>"
|
122
116
|
- !ruby/object:Gem::Version
|
123
|
-
version: 0.
|
117
|
+
version: 0.68.0
|
124
118
|
type: :development
|
125
119
|
prerelease: false
|
126
120
|
version_requirements: !ruby/object:Gem::Requirement
|
127
121
|
requirements:
|
128
122
|
- - "~>"
|
129
123
|
- !ruby/object:Gem::Version
|
130
|
-
version: 0.
|
124
|
+
version: 0.68.0
|
131
125
|
- !ruby/object:Gem::Dependency
|
132
126
|
name: simplecov
|
133
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,64 +150,46 @@ dependencies:
|
|
156
150
|
- - ">="
|
157
151
|
- !ruby/object:Gem::Version
|
158
152
|
version: '0'
|
159
|
-
description:
|
153
|
+
description: AnyCable is a polyglot replacement for ActionCable-compatible servers
|
160
154
|
email:
|
161
155
|
- dementiev.vm@gmail.com
|
162
|
-
executables:
|
156
|
+
executables:
|
157
|
+
- anycable
|
158
|
+
- anycabled
|
163
159
|
extensions: []
|
164
160
|
extra_rdoc_files: []
|
165
161
|
files:
|
166
|
-
- ".gitignore"
|
167
|
-
- ".hound.yml"
|
168
|
-
- ".rubocop.yml"
|
169
|
-
- ".travis.yml"
|
170
162
|
- CHANGELOG.md
|
171
|
-
- Gemfile
|
172
163
|
- MIT-LICENSE
|
173
|
-
- Makefile
|
174
|
-
- PITCHME.md
|
175
|
-
- PITCHME.yaml
|
176
164
|
- README.md
|
177
|
-
-
|
178
|
-
-
|
179
|
-
- assets/Memory3.png
|
180
|
-
- assets/Memory5.png
|
181
|
-
- assets/RTT3.png
|
182
|
-
- assets/RTT5.png
|
183
|
-
- assets/Scheme1.png
|
184
|
-
- assets/Scheme2.png
|
185
|
-
- assets/cpu_chart.gif
|
186
|
-
- assets/cpu_chart2.gif
|
187
|
-
- assets/evlms.png
|
188
|
-
- benchmarks/.gitignore
|
189
|
-
- benchmarks/2017-02-12.md
|
190
|
-
- benchmarks/2018-03-04.md
|
191
|
-
- benchmarks/2018-05-27-rpc-bench.md
|
192
|
-
- benchmarks/HowTo.md
|
193
|
-
- benchmarks/ansible.cfg
|
194
|
-
- benchmarks/benchmark.yml
|
195
|
-
- benchmarks/hosts
|
196
|
-
- benchmarks/servers.yml
|
165
|
+
- bin/anycable
|
166
|
+
- bin/anycabled
|
197
167
|
- bin/console
|
198
168
|
- bin/setup
|
199
|
-
- circle.yml
|
200
|
-
- etc/bug_report_template.rb
|
201
169
|
- lib/anycable.rb
|
170
|
+
- lib/anycable/broadcast_adapters.rb
|
171
|
+
- lib/anycable/broadcast_adapters/redis.rb
|
172
|
+
- lib/anycable/cli.rb
|
202
173
|
- lib/anycable/config.rb
|
203
|
-
- lib/anycable/
|
174
|
+
- lib/anycable/exceptions_handling.rb
|
204
175
|
- lib/anycable/health_server.rb
|
205
|
-
- lib/anycable/
|
176
|
+
- lib/anycable/middleware.rb
|
177
|
+
- lib/anycable/middleware_chain.rb
|
206
178
|
- lib/anycable/rpc/rpc_pb.rb
|
207
179
|
- lib/anycable/rpc/rpc_services_pb.rb
|
208
180
|
- lib/anycable/rpc_handler.rb
|
209
181
|
- lib/anycable/server.rb
|
210
182
|
- lib/anycable/socket.rb
|
211
183
|
- lib/anycable/version.rb
|
212
|
-
- protos/rpc.proto
|
213
184
|
homepage: http://github.com/anycable/anycable
|
214
185
|
licenses:
|
215
186
|
- MIT
|
216
|
-
metadata:
|
187
|
+
metadata:
|
188
|
+
bug_tracker_uri: http://github.com/anycable/anycable/issues
|
189
|
+
changelog_uri: https://github.com/anycable/anycable/blob/master/CHANGELOG.md
|
190
|
+
documentation_uri: https://docs.anycable.io/
|
191
|
+
homepage_uri: https://anycable.io/
|
192
|
+
source_code_uri: http://github.com/anycable/anycable
|
217
193
|
post_install_message:
|
218
194
|
rdoc_options: []
|
219
195
|
require_paths:
|
@@ -222,16 +198,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
198
|
requirements:
|
223
199
|
- - ">="
|
224
200
|
- !ruby/object:Gem::Version
|
225
|
-
version:
|
201
|
+
version: 2.4.0
|
226
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
203
|
requirements:
|
228
204
|
- - ">="
|
229
205
|
- !ruby/object:Gem::Version
|
230
206
|
version: '0'
|
231
207
|
requirements: []
|
232
|
-
|
233
|
-
rubygems_version: 2.7.6
|
208
|
+
rubygems_version: 3.0.3
|
234
209
|
signing_key:
|
235
210
|
specification_version: 4
|
236
|
-
summary:
|
211
|
+
summary: AnyCable is a polyglot replacement for ActionCable-compatible servers
|
237
212
|
test_files: []
|
data/.gitignore
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
# Numerous always-ignore extensions
|
2
|
-
*.diff
|
3
|
-
*.err
|
4
|
-
*.orig
|
5
|
-
*.log
|
6
|
-
*.rej
|
7
|
-
*.swo
|
8
|
-
*.swp
|
9
|
-
*.vi
|
10
|
-
*~
|
11
|
-
*.sass-cache
|
12
|
-
*.iml
|
13
|
-
.idea/
|
14
|
-
|
15
|
-
# Sublime
|
16
|
-
*.sublime-project
|
17
|
-
*.sublime-workspace
|
18
|
-
|
19
|
-
# OS or Editor folders
|
20
|
-
.DS_Store
|
21
|
-
.cache
|
22
|
-
.project
|
23
|
-
.settings
|
24
|
-
.tmproj
|
25
|
-
Thumbs.db
|
26
|
-
|
27
|
-
.bundle/
|
28
|
-
log/*.log
|
29
|
-
*.gz
|
30
|
-
pkg/
|
31
|
-
spec/dummy/db/*.sqlite3
|
32
|
-
spec/dummy/db/*.sqlite3-journal
|
33
|
-
spec/dummy/tmp/
|
34
|
-
|
35
|
-
Gemfile.lock
|
36
|
-
Gemfile.local
|
37
|
-
.rspec
|
38
|
-
*.gem
|
39
|
-
tmp/
|
40
|
-
coverage/
|
data/.hound.yml
DELETED
data/.rubocop.yml
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
AllCops:
|
2
|
-
# Include gemspec and Rakefile
|
3
|
-
Include:
|
4
|
-
- 'lib/**/*.rb'
|
5
|
-
- 'lib/**/*.rake'
|
6
|
-
- 'spec/**/*.rb'
|
7
|
-
Exclude:
|
8
|
-
- 'bin/**/*'
|
9
|
-
- 'spec/dummy/**/*'
|
10
|
-
- 'tmp/**/*'
|
11
|
-
- 'bench/**/*'
|
12
|
-
- 'vendor/**/*'
|
13
|
-
- 'lib/anycable/rpc/**/*'
|
14
|
-
- 'gemfiles/**/*'
|
15
|
-
- 'Gemfile'
|
16
|
-
- 'Rakefile'
|
17
|
-
- '*.gemspec'
|
18
|
-
DisplayCopNames: true
|
19
|
-
StyleGuideCopsOnly: false
|
20
|
-
TargetRubyVersion: 2.4
|
21
|
-
|
22
|
-
Naming/AccessorMethodName:
|
23
|
-
Enabled: false
|
24
|
-
|
25
|
-
Naming/UncommunicativeMethodParamName:
|
26
|
-
Enabled: false
|
27
|
-
|
28
|
-
Style/PercentLiteralDelimiters:
|
29
|
-
Enabled: false
|
30
|
-
|
31
|
-
Style/TrivialAccessors:
|
32
|
-
Enabled: false
|
33
|
-
|
34
|
-
Style/Documentation:
|
35
|
-
Exclude:
|
36
|
-
- 'spec/**/*.rb'
|
37
|
-
|
38
|
-
Style/StringLiterals:
|
39
|
-
Enabled: false
|
40
|
-
|
41
|
-
Layout/SpaceInsideStringInterpolation:
|
42
|
-
EnforcedStyle: no_space
|
43
|
-
|
44
|
-
Style/BlockDelimiters:
|
45
|
-
Exclude:
|
46
|
-
- 'spec/**/*.rb'
|
47
|
-
|
48
|
-
Lint/AmbiguousRegexpLiteral:
|
49
|
-
Enabled: false
|
50
|
-
|
51
|
-
Lint/MissingCopEnableDirective:
|
52
|
-
Enabled: false
|
53
|
-
|
54
|
-
Metrics/MethodLength:
|
55
|
-
Exclude:
|
56
|
-
- 'spec/**/*.rb'
|
57
|
-
|
58
|
-
Metrics/LineLength:
|
59
|
-
Max: 100
|
60
|
-
Exclude:
|
61
|
-
- 'spec/**/*.rb'
|
62
|
-
|
63
|
-
Metrics/BlockLength:
|
64
|
-
Exclude:
|
65
|
-
- 'spec/**/*.rb'
|
66
|
-
|
67
|
-
Rails/Date:
|
68
|
-
Enabled: false
|
69
|
-
|
70
|
-
Rails/TimeZone:
|
71
|
-
Enabled: false
|
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/Makefile
DELETED
data/PITCHME.md
DELETED
@@ -1,139 +0,0 @@
|
|
1
|
-
#HSLIDE
|
2
|
-
|
3
|
-
## AnyCable
|
4
|
-
### A polyglot replacement for <span style="color:#e49436">ActionCable</span> server
|
5
|
-
|
6
|
-
#HSLIDE
|
7
|
-
|
8
|
-
## ActionCable
|
9
|
-
|
10
|
-
#### Easy to use <!-- .element: class="fragment" -->
|
11
|
-
|
12
|
-
#### Allows you to access business logic <!-- .element: class="fragment" -->
|
13
|
-
|
14
|
-
#### Has JS client that just works <!-- .element: class="fragment" -->
|
15
|
-
|
16
|
-
#HSLIDE
|
17
|
-
|
18
|
-
## ActionCable
|
19
|
-
|
20
|
-
### is good for [designing live features](http://weblog.rubyonrails.org/2016/6/30/Rails-5-0-final/)
|
21
|
-
|
22
|
-
|
23
|
-
#HSLIDE
|
24
|
-
|
25
|
-
## But...
|
26
|
-
### is it ready for <span style="color:#e49436">production</span>?
|
27
|
-
|
28
|
-
#HSLIDE
|
29
|
-
|
30
|
-
## Benchmarks
|
31
|
-
|
32
|
-
#### Unfortunately, <span style="color:#e49436">ActionCable</span> leaves much to be desired
|
33
|
-
|
34
|
-
<span style="font-size:0.6em; color:gray">Press Down key to see charts and gifs</span>
|
35
|
-
|
36
|
-
#VSLIDE
|
37
|
-
|
38
|
-
## Memory
|
39
|
-
|
40
|
-

|
41
|
-
|
42
|
-
#VSLIDE
|
43
|
-
|
44
|
-
## CPU
|
45
|
-
|
46
|
-

|
47
|
-
|
48
|
-
#VSLIDE
|
49
|
-
|
50
|
-
## Broadcast Round Trip Time
|
51
|
-
|
52
|
-

|
53
|
-
|
54
|
-
#HSLIDE
|
55
|
-
|
56
|
-
### Let's extract <span style="color:#e49436">WebSockets</span> somewhere else!
|
57
|
-
|
58
|
-
#HSLIDE
|
59
|
-
|
60
|
-
## AnyCable
|
61
|
-
|
62
|
-
#### Combines the good parts from <span style="color:#e49436">ActionCable</span> with the power of your favorite language for concurrent applications
|
63
|
-
|
64
|
-
<span style="font-size:0.6em; color:gray">How it works? See below</span>
|
65
|
-
|
66
|
-
#VSLIDE
|
67
|
-
|
68
|
-
## How AnyCable Works
|
69
|
-
|
70
|
-

|
71
|
-
|
72
|
-
#VSLIDE
|
73
|
-
|
74
|
-
## [gRPC](http://grpc.io)
|
75
|
-
|
76
|
-
### Makes AnyCable to be a <span style="color:#e49436">polyglot</span>
|
77
|
-
|
78
|
-
#VSLIDE
|
79
|
-
|
80
|
-
## AnyCable
|
81
|
-
|
82
|
-
#### [Compatible](https://github.com/anycable/anycable#actioncable-compatibility) with ActionCable (channels, javascript, broadcasting)
|
83
|
-
|
84
|
-
#### You can still use ActionCable for <span style="color:#e49436">development</span> and <span style="color:#e49436">testing</span>
|
85
|
-
|
86
|
-
#VSLIDE
|
87
|
-
|
88
|
-
## AnyCable Servers
|
89
|
-
|
90
|
-
- [anycable-go](https://github.com/anycable/anycable-go)
|
91
|
-
|
92
|
-
- [erlycable](https://github.com/anycable/erlycable)
|
93
|
-
|
94
|
-
#VSLIDE
|
95
|
-
|
96
|
-
## AnyCable
|
97
|
-
|
98
|
-
### [Demo Application](https://github.com/anycable/anycable_demo)
|
99
|
-
|
100
|
-
#HSLIDE
|
101
|
-
|
102
|
-
## Benchmarks Again
|
103
|
-
|
104
|
-
#### AnyCable shows much more better performance.
|
105
|
-
|
106
|
-
<span style="font-size:0.6em; color:gray">Press Down key to see charts and gifs</span>
|
107
|
-
|
108
|
-
#VSLIDE
|
109
|
-
|
110
|
-
## Memory
|
111
|
-
|
112
|
-

|
113
|
-
|
114
|
-
#VSLIDE
|
115
|
-
|
116
|
-
## CPU
|
117
|
-
|
118
|
-

|
119
|
-
|
120
|
-
#VSLIDE
|
121
|
-
|
122
|
-
## Broadcast Round Trip Time
|
123
|
-
|
124
|
-

|
125
|
-
|
126
|
-
|
127
|
-
#HSLIDE
|
128
|
-
|
129
|
-
## Let's Make ActionCable Not Suck!
|
130
|
-
|
131
|
-
[anycable.evilmartians.io](http://anycable.io/)
|
132
|
-
|
133
|
-
Vladimir Dementyev [@palkan_tula](http://twitter.com/palkan_tula)
|
134
|
-
|
135
|
-
[Evil Martians](http://evilmartians.com)
|
136
|
-
|
137
|
-
Twitter [@any_cable](http://twitter.com/any_cable)
|
138
|
-
|
139
|
-
GitHub [@anycable](http://github.com/anycable)
|