spikard 0.7.3 → 0.7.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/ext/spikard_rb/Cargo.toml +1 -1
- data/lib/spikard/version.rb +1 -1
- data/vendor/crates/spikard-bindings-shared/Cargo.toml +1 -1
- data/vendor/crates/spikard-core/Cargo.toml +1 -1
- data/vendor/crates/spikard-http/Cargo.toml +1 -1
- data/vendor/crates/spikard-rb/Cargo.toml +1 -1
- data/vendor/crates/spikard-rb/src/lib.rs +16 -0
- data/vendor/crates/spikard-rb-macros/Cargo.toml +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8aaa69147b9559e656b5ed4ef831e2359cf1118f3aa4dd48bcddacf3ca3f7017
|
|
4
|
+
data.tar.gz: 938381140bd2aa352d323c8a67d0e90301d98baafbde407377c8871a4bcc4702
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c6328843f0532852b9f232ffc39c7a7e0ea2b86e1bc253348275e7426a8155a9741b4a4abcd7d62b3ea4461acca55ecb2587af9d667ce1f0e3b8902bed0c78e6
|
|
7
|
+
data.tar.gz: 421d73af951b6a4e2574962fb2c0a3b3dbed7854aafbdefec842afab821ad389cebb130c3a8a63b6bf02c62270ab23af0cc184c2dc1198650b05a4ddf7119a9d
|
data/ext/spikard_rb/Cargo.toml
CHANGED
data/lib/spikard/version.rb
CHANGED
|
@@ -54,6 +54,7 @@ use std::cell::RefCell;
|
|
|
54
54
|
use std::collections::HashMap;
|
|
55
55
|
use std::io;
|
|
56
56
|
use std::mem;
|
|
57
|
+
use std::panic::AssertUnwindSafe;
|
|
57
58
|
use std::pin::Pin;
|
|
58
59
|
use std::sync::Arc;
|
|
59
60
|
use std::time::Duration;
|
|
@@ -61,6 +62,7 @@ use url::Url;
|
|
|
61
62
|
|
|
62
63
|
use crate::config::extract_server_config;
|
|
63
64
|
use crate::conversion::{extract_files, problem_to_json};
|
|
65
|
+
use crate::gvl::with_gvl;
|
|
64
66
|
use crate::integration::build_dependency_container;
|
|
65
67
|
use crate::metadata::{build_route_metadata, ruby_value_to_json};
|
|
66
68
|
use crate::request::NativeRequest;
|
|
@@ -875,6 +877,20 @@ impl RubyHandler {
|
|
|
875
877
|
}
|
|
876
878
|
|
|
877
879
|
fn handle(&self, request_data: RequestData) -> HandlerResult {
|
|
880
|
+
with_gvl(|| {
|
|
881
|
+
let result =
|
|
882
|
+
std::panic::catch_unwind(AssertUnwindSafe(|| self.handle_inner(request_data)));
|
|
883
|
+
match result {
|
|
884
|
+
Ok(res) => res,
|
|
885
|
+
Err(_) => Err((
|
|
886
|
+
StatusCode::INTERNAL_SERVER_ERROR,
|
|
887
|
+
"Unexpected panic while executing Ruby handler".to_string(),
|
|
888
|
+
)),
|
|
889
|
+
}
|
|
890
|
+
})
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
fn handle_inner(&self, request_data: RequestData) -> HandlerResult {
|
|
878
894
|
let validated_params = request_data.validated_params.clone();
|
|
879
895
|
|
|
880
896
|
let ruby = Ruby::get().map_err(|_| {
|