tonic-rails 0.1.0
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 +7 -0
- data/CHANGELOG.md +52 -0
- data/Cargo.lock +1242 -0
- data/Cargo.toml +11 -0
- data/LICENSE +21 -0
- data/README.md +391 -0
- data/ext/tonic_rails_native/Cargo.toml +44 -0
- data/ext/tonic_rails_native/extconf.rb +9 -0
- data/ext/tonic_rails_native/src/body.rs +289 -0
- data/ext/tonic_rails_native/src/dispatch.rs +250 -0
- data/ext/tonic_rails_native/src/framing.rs +349 -0
- data/ext/tonic_rails_native/src/gvl.rs +473 -0
- data/ext/tonic_rails_native/src/lib.rs +90 -0
- data/ext/tonic_rails_native/src/net.rs +146 -0
- data/ext/tonic_rails_native/src/server.rs +507 -0
- data/lib/tonic/rails/base.rb +215 -0
- data/lib/tonic/rails/configuration.rb +149 -0
- data/lib/tonic/rails/railtie.rb +56 -0
- data/lib/tonic/rails/reflection.rb +50 -0
- data/lib/tonic/rails/router.rb +71 -0
- data/lib/tonic/rails/rpc_error.rb +65 -0
- data/lib/tonic/rails/server.rb +224 -0
- data/lib/tonic/rails/tasks/tonic-rails.rake +36 -0
- data/lib/tonic/rails/testing.rb +85 -0
- data/lib/tonic/rails/version.rb +7 -0
- data/lib/tonic-rails.rb +91 -0
- metadata +121 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: e6c9da1fa1dde14dab1bd46c64821154a392dd9e5b5bc31faf396cf8e51dfc28
|
|
4
|
+
data.tar.gz: f0988c4f232fb3016b205d094ea0970085e7515f71f6845e55bd8bc6d43c7d70
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 82a6eb4a8da4daaf1f91e6ead904b1223c13cc5b02f90e9bebf810ca7fc25bd71cb30cce07e539fde05b81b12fd89e84d540fc5aa5a22d38d7697aacb746a1c0
|
|
7
|
+
data.tar.gz: 87dbd3f3abcbdefd3d6f47ad8b93ea992672efe67c643bcf47e75e255e920983ab6695ecfea8eb4273db390f57e6de419b9c369ad5067f0e07a0d086a7c9e218
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented here. The format is
|
|
4
|
+
based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the
|
|
5
|
+
project follows [Semantic Versioning](https://semver.org/). Until 1.0,
|
|
6
|
+
minor versions may contain breaking changes.
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.1.0]
|
|
11
|
+
|
|
12
|
+
First public release.
|
|
13
|
+
|
|
14
|
+
### Serving
|
|
15
|
+
|
|
16
|
+
- gRPC server for Rails built on tonic 0.14 (HTTP/2, TLS via rustls,
|
|
17
|
+
keepalive, flow control), with Ruby handlers running on a pool of
|
|
18
|
+
dispatch threads inside the Rails executor.
|
|
19
|
+
- Unary, server-streaming, client-streaming and bidirectional RPCs, with
|
|
20
|
+
backpressure in both directions and incremental streaming.
|
|
21
|
+
- Handlers declared with `rpc_service` (read from the protobuf descriptor
|
|
22
|
+
pool) or individual `rpc` calls; requests as Hashes or, with
|
|
23
|
+
`request_format :message`, protobuf messages; responses as either.
|
|
24
|
+
- Routes registered at runtime: no service definitions are compiled into
|
|
25
|
+
the native extension.
|
|
26
|
+
- Built-in `grpc.health.v1` (per service, flips to NOT_SERVING on
|
|
27
|
+
shutdown) and opt-in `grpc.reflection.v1` generated from loaded
|
|
28
|
+
descriptors.
|
|
29
|
+
- Interceptors, request metadata, client deadlines (`deadline_ms`,
|
|
30
|
+
`deadline_exceeded?`) and shutdown awareness (`cancelled?`).
|
|
31
|
+
- `Tonic::Rails::Testing.call` for in-process handler tests.
|
|
32
|
+
- Railtie: `config.tonic_rails.*` settings, Rails logger and error
|
|
33
|
+
reporter, code reloading support, rake tasks `tonic_rails:serve`,
|
|
34
|
+
`tonic_rails:routes` and `tonic_rails:compile_protos`.
|
|
35
|
+
|
|
36
|
+
### Production behaviour
|
|
37
|
+
|
|
38
|
+
- Graceful shutdown on SIGTERM/SIGINT: health flips to NOT_SERVING, new
|
|
39
|
+
connections are refused, in-flight calls drain for `drain_timeout`.
|
|
40
|
+
- Limits: `max_message_size` (also caps gzip-decompressed size),
|
|
41
|
+
`max_connections`, `concurrency_limit_per_connection`, request metadata
|
|
42
|
+
size, and `dispatch_queue_size` load shedding (`RESOURCE_EXHAUSTED`).
|
|
43
|
+
- TLS and mutual TLS (`tls_client_ca_path`). Invalid TLS configuration
|
|
44
|
+
stops startup; the server never falls back to plaintext.
|
|
45
|
+
- Unexpected exceptions (in handlers or interceptors) reach clients only
|
|
46
|
+
as `INTERNAL: internal error`; details are logged and reported.
|
|
47
|
+
- `grpc-message` is percent-encoded per the gRPC spec.
|
|
48
|
+
- Precompiled native gems for Linux (x86_64, aarch64; glibc and musl) and
|
|
49
|
+
macOS (x86_64, arm64), Ruby 3.3 to 4.0.
|
|
50
|
+
|
|
51
|
+
[Unreleased]: https://github.com/CodingAnarchy/tonic-rails/compare/v0.1.0...HEAD
|
|
52
|
+
[0.1.0]: https://github.com/CodingAnarchy/tonic-rails/releases/tag/v0.1.0
|