anycable-core 1.1.0 → 1.1.4

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