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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +166 -2
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +19 -60
  5. data/bin/anycable +13 -0
  6. data/bin/anycabled +30 -0
  7. data/lib/anycable.rb +69 -18
  8. data/lib/anycable/broadcast_adapters.rb +33 -0
  9. data/lib/anycable/broadcast_adapters/redis.rb +42 -0
  10. data/lib/anycable/cli.rb +329 -0
  11. data/lib/anycable/config.rb +93 -17
  12. data/lib/anycable/exceptions_handling.rb +37 -0
  13. data/lib/anycable/health_server.rb +52 -31
  14. data/lib/anycable/middleware.rb +19 -0
  15. data/lib/anycable/middleware_chain.rb +58 -0
  16. data/lib/anycable/rpc/rpc_pb.rb +1 -1
  17. data/lib/anycable/rpc/rpc_services_pb.rb +1 -1
  18. data/lib/anycable/rpc_handler.rb +77 -32
  19. data/lib/anycable/server.rb +132 -39
  20. data/lib/anycable/socket.rb +1 -1
  21. data/lib/anycable/version.rb +2 -2
  22. metadata +34 -59
  23. data/.gitignore +0 -40
  24. data/.hound.yml +0 -3
  25. data/.rubocop.yml +0 -71
  26. data/.travis.yml +0 -13
  27. data/Gemfile +0 -8
  28. data/Makefile +0 -5
  29. data/PITCHME.md +0 -139
  30. data/PITCHME.yaml +0 -1
  31. data/Rakefile +0 -8
  32. data/anycable.gemspec +0 -32
  33. data/assets/Memory3.png +0 -0
  34. data/assets/Memory5.png +0 -0
  35. data/assets/RTT3.png +0 -0
  36. data/assets/RTT5.png +0 -0
  37. data/assets/Scheme1.png +0 -0
  38. data/assets/Scheme2.png +0 -0
  39. data/assets/cpu_chart.gif +0 -0
  40. data/assets/cpu_chart2.gif +0 -0
  41. data/assets/evlms.png +0 -0
  42. data/benchmarks/.gitignore +0 -1
  43. data/benchmarks/2017-02-12.md +0 -308
  44. data/benchmarks/2018-03-04.md +0 -192
  45. data/benchmarks/2018-05-27-rpc-bench.md +0 -57
  46. data/benchmarks/HowTo.md +0 -23
  47. data/benchmarks/ansible.cfg +0 -9
  48. data/benchmarks/benchmark.yml +0 -67
  49. data/benchmarks/hosts +0 -5
  50. data/benchmarks/servers.yml +0 -36
  51. data/circle.yml +0 -8
  52. data/etc/bug_report_template.rb +0 -76
  53. data/lib/anycable/handler/exceptions_handling.rb +0 -43
  54. data/lib/anycable/pubsub.rb +0 -26
  55. data/protos/rpc.proto +0 -55
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Anycable
3
+ module AnyCable
4
4
  # Socket mock to be used with application connection
5
5
  class Socket
6
6
  attr_reader :transmissions, :env
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Anycable
4
- VERSION = "0.5.2"
3
+ module AnyCable
4
+ VERSION = "0.6.4"
5
5
  end
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.5.2
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: 2018-09-06 00:00:00.000000000 Z
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: '1.1'
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: '1.1'
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.6'
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.6'
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: '3.2'
54
- type: :runtime
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: '3.2'
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.58.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.58.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: Polyglot replacement for ActionCable server
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
- - Rakefile
178
- - anycable.gemspec
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/handler/exceptions_handling.rb
174
+ - lib/anycable/exceptions_handling.rb
204
175
  - lib/anycable/health_server.rb
205
- - lib/anycable/pubsub.rb
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: '0'
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
- rubyforge_project:
233
- rubygems_version: 2.7.6
208
+ rubygems_version: 3.0.3
234
209
  signing_key:
235
210
  specification_version: 4
236
- summary: Polyglot replacement for ActionCable server
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
@@ -1,3 +0,0 @@
1
- ruby:
2
- enabled: true
3
- config_file: .rubocop.yml
@@ -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
@@ -1,13 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
-
4
- dist: trusty
5
- sudo: false
6
-
7
- notifications:
8
- email: false
9
-
10
- rvm:
11
- - 2.3.6
12
- - 2.4.3
13
- - 2.5.0
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
-
4
- local_gemfile = "#{File.dirname(__FILE__)}/Gemfile.local"
5
-
6
- if File.exist?(local_gemfile)
7
- eval(File.read(local_gemfile)) # rubocop:disable Lint/Eval
8
- end
data/Makefile DELETED
@@ -1,5 +0,0 @@
1
- all: build
2
-
3
- build:
4
- grpc_tools_ruby_protoc -I ./protos --ruby_out=./lib/anycable/rpc --grpc_out=./lib/anycable/rpc ./protos/rpc.proto
5
- sed -i '' '/'rpc_pb'/d' ./lib/anycable/rpc/rpc_services_pb.rb
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
- ![memory](assets/Memory3.png)
41
-
42
- #VSLIDE
43
-
44
- ## CPU
45
-
46
- ![cpu](assets/cpu_chart.gif)
47
-
48
- #VSLIDE
49
-
50
- ## Broadcast Round Trip Time
51
-
52
- ![rtt](assets/RTT3.png)
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
- ![diagram](assets/Scheme2.png)
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
- ![memory](assets/Memory5.png)
113
-
114
- #VSLIDE
115
-
116
- ## CPU
117
-
118
- ![cpu](assets/cpu_chart2.gif)
119
-
120
- #VSLIDE
121
-
122
- ## Broadcast Round Trip Time
123
-
124
- ![rtt](assets/RTT5.png)
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)