anycable-core 1.1.0 → 1.1.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 +20 -0
- data/README.md +2 -0
- data/lib/anycable/cli.rb +1 -1
- data/lib/anycable/config.rb +3 -1
- data/lib/anycable/grpc/config.rb +12 -2
- data/lib/anycable/grpc.rb +1 -2
- data/lib/anycable/version.rb +1 -1
- data/lib/anycable.rb +4 -1
- data/sig/anycable/rpc.rbs +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b95998ab1b25eb5ffeb6f165857e293efed31041ffadfb9e808db94e5ebcc59c
|
4
|
+
data.tar.gz: 5063f955316e50fafdc2de7d22c339e56fe095fb6457052d0cd84eca7e22896f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36f1a8a58db6ed030f86f9733a41ac3b18a43ac2dc354eab44bb140a6a83dd6c7e4bd64a848ae1a8d601939ad8ae07c5e53a826b05c25c7bdad6a47eb5bd015c
|
7
|
+
data.tar.gz: ff55c0d25b5b93c5c1b5d4d724d0da62c605c1e3b499372af8e0c53552f74ecc7ec0e2900207c2c86f29d89506eae04336dec5bc63f5716be33caeeed8b0d23c
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,26 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 1.1.4 (2021-11-11)
|
6
|
+
|
7
|
+
- Do not swallow `grpc` missing .so exceptions. ([@palkan][])
|
8
|
+
|
9
|
+
## 1.1.3 (2021-09-29)
|
10
|
+
|
11
|
+
- Added support for type coercion from Anyway Config 2.2. ([@palkan][])
|
12
|
+
|
13
|
+
## 1.1.2 (2021-09-10) 🤵👰
|
14
|
+
|
15
|
+
- Improved gRPC server args support. ([@palkan][])
|
16
|
+
|
17
|
+
Add ability to declare gRPC server args without namespacing (i.e., `"max_connection_age_ms"` instead of `"grpc.max_connection_age_ms"`). That makes it possible to use ENV vars to provide the gRPC configuration.
|
18
|
+
|
19
|
+
## 1.1.1 (2021-06-05)
|
20
|
+
|
21
|
+
- Fixed error message when RPC implementation is missing. ([@palkan][])
|
22
|
+
|
23
|
+
We haven't extracted `anycable-grpc` yet.
|
24
|
+
|
5
25
|
## 1.1.0 🚸 (2021-06-01)
|
6
26
|
|
7
27
|
- No changes since 1.1.0.rc1.
|
data/README.md
CHANGED
@@ -12,6 +12,8 @@ AnyCable allows you to use any WebSocket server (written in any language) as a r
|
|
12
12
|
|
13
13
|
AnyCable uses the same protocol as ActionCable, so you can use its [JavaScript client](https://www.npmjs.com/package/actioncable) without any monkey-patching.
|
14
14
|
|
15
|
+
> [AnyCable Pro](https://docs.anycable.io/pro) has been launched 🚀
|
16
|
+
|
15
17
|
<a href="https://evilmartians.com/">
|
16
18
|
<img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54"></a>
|
17
19
|
|
data/lib/anycable/cli.rb
CHANGED
@@ -252,7 +252,7 @@ module AnyCable
|
|
252
252
|
return if AnyCable.server_builder
|
253
253
|
|
254
254
|
logger.error "AnyCable server builder must be configured. " \
|
255
|
-
"Make sure you've required a gem (e.g. `
|
255
|
+
"Make sure you've required a gem (e.g. `grpc`) or " \
|
256
256
|
"configured `AnyCable.server_builder` yourself"
|
257
257
|
exit(1)
|
258
258
|
end
|
data/lib/anycable/config.rb
CHANGED
@@ -46,7 +46,9 @@ module AnyCable
|
|
46
46
|
version_check_enabled: true
|
47
47
|
)
|
48
48
|
|
49
|
-
|
49
|
+
if respond_to?(:coerce_types)
|
50
|
+
coerce_types redis_sentinels: {type: nil, array: true}, debug: :boolean, version_check_enabled: :boolean
|
51
|
+
end
|
50
52
|
|
51
53
|
flag_options :debug
|
52
54
|
|
data/lib/anycable/grpc/config.rb
CHANGED
@@ -8,7 +8,7 @@ AnyCable::Config.attr_config(
|
|
8
8
|
rpc_max_waiting_requests: ::GRPC::RpcServer::DEFAULT_MAX_WAITING_REQUESTS,
|
9
9
|
rpc_poll_period: ::GRPC::RpcServer::DEFAULT_POLL_PERIOD,
|
10
10
|
rpc_pool_keep_alive: ::GRPC::Pool::DEFAULT_KEEP_ALIVE,
|
11
|
-
#
|
11
|
+
# https://github.com/grpc/grpc/blob/f526602bff029b8db50a8d57134d72da33d8a752/include/grpc/impl/codegen/grpc_types.h#L141-L351
|
12
12
|
rpc_server_args: {},
|
13
13
|
log_grpc: false
|
14
14
|
)
|
@@ -33,9 +33,19 @@ module AnyCable
|
|
33
33
|
max_waiting_requests: rpc_max_waiting_requests,
|
34
34
|
poll_period: rpc_poll_period,
|
35
35
|
pool_keep_alive: rpc_pool_keep_alive,
|
36
|
-
server_args:
|
36
|
+
server_args: normalized_grpc_server_args
|
37
37
|
}
|
38
38
|
end
|
39
|
+
|
40
|
+
def normalized_grpc_server_args
|
41
|
+
val = rpc_server_args
|
42
|
+
return {} unless val.is_a?(Hash)
|
43
|
+
|
44
|
+
val.transform_keys do |key|
|
45
|
+
skey = key.to_s
|
46
|
+
skey.start_with?("grpc.") ? skey : "grpc.#{skey}"
|
47
|
+
end
|
48
|
+
end
|
39
49
|
end
|
40
50
|
end
|
41
51
|
end
|
data/lib/anycable/grpc.rb
CHANGED
@@ -16,7 +16,6 @@ AnyCable.server_builder = ->(config) {
|
|
16
16
|
::GRPC.define_singleton_method(:logger) { AnyCable.logger } if config.log_grpc?
|
17
17
|
|
18
18
|
params = config.to_grpc_params
|
19
|
-
params[:host] = config.rpc_host
|
20
19
|
|
21
|
-
AnyCable::GRPC::Server.new(**params)
|
20
|
+
AnyCable::GRPC::Server.new(**params, host: config.rpc_host)
|
22
21
|
}
|
data/lib/anycable/version.rb
CHANGED
data/lib/anycable.rb
CHANGED
@@ -111,5 +111,8 @@ end
|
|
111
111
|
# gRPC is the default for now, so, let's try to load it.
|
112
112
|
begin
|
113
113
|
require "anycable/grpc"
|
114
|
-
rescue LoadError
|
114
|
+
rescue LoadError => e
|
115
|
+
# Re-raise an exception if we failed to load grpc .so files
|
116
|
+
# (e.g., on Alpine Linux)
|
117
|
+
raise if /Error loading shared library/.match?(e.message)
|
115
118
|
end
|
data/sig/anycable/rpc.rbs
CHANGED
@@ -19,13 +19,13 @@ module AnyCable
|
|
19
19
|
attr_accessor url: String
|
20
20
|
attr_accessor headers: protoMap
|
21
21
|
|
22
|
-
def initialize: (?url: String, ?headers: protoMap, ?cstate: protoMap
|
22
|
+
def initialize: (?url: String, ?headers: protoMap, ?cstate: protoMap?, ?istate: protoMap?) -> void
|
23
23
|
end
|
24
24
|
|
25
25
|
class EnvResponse
|
26
26
|
include _WithEnvState
|
27
27
|
|
28
|
-
def initialize: (?cstate: protoMap
|
28
|
+
def initialize: (?cstate: protoMap?, ?istate: protoMap?) -> void
|
29
29
|
end
|
30
30
|
|
31
31
|
interface _ProtoMessage
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anycable-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- palkan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anyway_config
|
@@ -231,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
231
|
- !ruby/object:Gem::Version
|
232
232
|
version: '0'
|
233
233
|
requirements: []
|
234
|
-
rubygems_version: 3.2.
|
234
|
+
rubygems_version: 3.2.22
|
235
235
|
signing_key:
|
236
236
|
specification_version: 4
|
237
237
|
summary: AnyCable core RPC implementation
|