anycable 0.5.2 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
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)