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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fa8305263c3fd594946fb74f9ee7623f064f02003968f6e6277e84be861b5f27
4
- data.tar.gz: 184debc2cc83ed196cf1fb59c31faf1ee20e1ff682bfb3400b07dbaae804932e
3
+ metadata.gz: b95998ab1b25eb5ffeb6f165857e293efed31041ffadfb9e808db94e5ebcc59c
4
+ data.tar.gz: 5063f955316e50fafdc2de7d22c339e56fe095fb6457052d0cd84eca7e22896f
5
5
  SHA512:
6
- metadata.gz: 9a0592164cd71433803b8f2385972f8cba298f9ce3cfd4340b6898d9fc86e7e07b3770fe5e003a90720e3bff93357588a25d3337af65bcf48dd7bf651e40dda4
7
- data.tar.gz: cfa077d12b184720fc993c0926a5105c784bc4980628ce6454dc079eb7bd54a74a691436446574eeffb4cf8f93b865e0904545070508a67d1e38d6bb94920a2c
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. `anycable-grpc`) or " \
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
@@ -46,7 +46,9 @@ module AnyCable
46
46
  version_check_enabled: true
47
47
  )
48
48
 
49
- alias_method :version_check_enabled?, :version_check_enabled
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
 
@@ -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
- # See https://github.com/grpc/grpc/blob/f526602bff029b8db50a8d57134d72da33d8a752/include/grpc/impl/codegen/grpc_types.h#L292-L315
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: rpc_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
  }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AnyCable
4
- VERSION = "1.1.0"
4
+ VERSION = "1.1.4"
5
5
  end
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, ?istate: protoMap) -> void
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, ?istate: protoMap) -> void
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.0
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-06-01 00:00:00.000000000 Z
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.15
234
+ rubygems_version: 3.2.22
235
235
  signing_key:
236
236
  specification_version: 4
237
237
  summary: AnyCable core RPC implementation