eppo-server-sdk 3.2.8 → 3.3.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 +4 -4
- data/Cargo.lock +4 -15
- data/README.md +17 -0
- data/ext/eppo_client/Cargo.toml +2 -2
- data/ext/eppo_client/src/client.rs +30 -1
- data/ext/eppo_client/src/lib.rs +0 -2
- data/lib/eppo_client/config.rb +3 -2
- data/lib/eppo_client/version.rb +1 -1
- 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: 48c186c8f79fbdb739eca53ecc09b128864046a6c510502ab2932f9ac1835205
|
|
4
|
+
data.tar.gz: '09175d83959067a77f5a5260d5e20b70b95e7e2cdd2f7d97ed0220a40b2be2db'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ece6f38eeb759216f8c0b25b37f9fc4e520e187073a5ac84c34af5c2d46b18050cea639a7dbbdd494bf7d7e32bcd5376977df6abf30a7205ff6b79c657656b46
|
|
7
|
+
data.tar.gz: 3791032b0cdc69ffd44f3d63dc7558c19c8370e576196edefefcaefbe60586a0417cbb8e30b348c7b4af34c64bd88d2a8bd0414c6ce8cf90a838a2026c64fd93
|
data/Cargo.lock
CHANGED
|
@@ -304,7 +304,7 @@ dependencies = [
|
|
|
304
304
|
|
|
305
305
|
[[package]]
|
|
306
306
|
name = "eppo_client"
|
|
307
|
-
version = "3.
|
|
307
|
+
version = "3.3.0"
|
|
308
308
|
dependencies = [
|
|
309
309
|
"env_logger",
|
|
310
310
|
"eppo_core",
|
|
@@ -318,9 +318,9 @@ dependencies = [
|
|
|
318
318
|
|
|
319
319
|
[[package]]
|
|
320
320
|
name = "eppo_core"
|
|
321
|
-
version = "4.1.
|
|
321
|
+
version = "4.1.1"
|
|
322
322
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
323
|
-
checksum = "
|
|
323
|
+
checksum = "f847d078c379d2102582e483751dd1a4444fd3e1863e6f23e852fc99c52270e6"
|
|
324
324
|
dependencies = [
|
|
325
325
|
"chrono",
|
|
326
326
|
"derive_more",
|
|
@@ -334,6 +334,7 @@ dependencies = [
|
|
|
334
334
|
"serde",
|
|
335
335
|
"serde_json",
|
|
336
336
|
"thiserror",
|
|
337
|
+
"tokio",
|
|
337
338
|
"url",
|
|
338
339
|
]
|
|
339
340
|
|
|
@@ -417,7 +418,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
417
418
|
checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
|
|
418
419
|
dependencies = [
|
|
419
420
|
"futures-core",
|
|
420
|
-
"futures-sink",
|
|
421
421
|
]
|
|
422
422
|
|
|
423
423
|
[[package]]
|
|
@@ -426,12 +426,6 @@ version = "0.3.30"
|
|
|
426
426
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
427
427
|
checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
|
|
428
428
|
|
|
429
|
-
[[package]]
|
|
430
|
-
name = "futures-io"
|
|
431
|
-
version = "0.3.30"
|
|
432
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
433
|
-
checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
|
|
434
|
-
|
|
435
429
|
[[package]]
|
|
436
430
|
name = "futures-sink"
|
|
437
431
|
version = "0.3.30"
|
|
@@ -451,13 +445,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
451
445
|
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
|
|
452
446
|
dependencies = [
|
|
453
447
|
"futures-core",
|
|
454
|
-
"futures-io",
|
|
455
|
-
"futures-sink",
|
|
456
448
|
"futures-task",
|
|
457
|
-
"memchr",
|
|
458
449
|
"pin-project-lite",
|
|
459
450
|
"pin-utils",
|
|
460
|
-
"slab",
|
|
461
451
|
]
|
|
462
452
|
|
|
463
453
|
[[package]]
|
|
@@ -1098,7 +1088,6 @@ dependencies = [
|
|
|
1098
1088
|
"base64",
|
|
1099
1089
|
"bytes",
|
|
1100
1090
|
"encoding_rs",
|
|
1101
|
-
"futures-channel",
|
|
1102
1091
|
"futures-core",
|
|
1103
1092
|
"futures-util",
|
|
1104
1093
|
"h2",
|
data/README.md
CHANGED
|
@@ -7,6 +7,23 @@ Refer to our [SDK documentation](https://docs.geteppo.com/feature-flags/sdks/rub
|
|
|
7
7
|
## Supported Ruby Versions
|
|
8
8
|
This version of the SDK is compatible with Ruby 3.0.6 and above.
|
|
9
9
|
|
|
10
|
+
## Logging
|
|
11
|
+
|
|
12
|
+
Ruby SDK uses [`env_logger`](https://docs.rs/env_logger/) for logging.
|
|
13
|
+
|
|
14
|
+
Starting from version 3.3.0, the log level can be configured via `EPPO_LOG` environment variable using one of the following values:
|
|
15
|
+
- `off`
|
|
16
|
+
- `error`
|
|
17
|
+
- `warn`
|
|
18
|
+
- `info` (default)
|
|
19
|
+
- `debug`
|
|
20
|
+
- `trace`
|
|
21
|
+
|
|
22
|
+
Alternatively, it can be configured using `log_level` parameter for `EppoClient::Config` constructor:
|
|
23
|
+
```ruby
|
|
24
|
+
config = EppoClient::Config.new("sdk-key", log_level: "debug")
|
|
25
|
+
```
|
|
26
|
+
|
|
10
27
|
# Contributing
|
|
11
28
|
|
|
12
29
|
## Testing with local version of `eppo_core`
|
data/ext/eppo_client/Cargo.toml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "eppo_client"
|
|
3
3
|
# TODO: this version and lib/eppo_client/version.rb should be in sync
|
|
4
|
-
version = "3.
|
|
4
|
+
version = "3.3.0"
|
|
5
5
|
edition = "2021"
|
|
6
6
|
license = "MIT"
|
|
7
7
|
publish = false
|
|
@@ -12,7 +12,7 @@ crate-type = ["cdylib"]
|
|
|
12
12
|
|
|
13
13
|
[dependencies]
|
|
14
14
|
env_logger = { version = "0.11.3", features = ["unstable-kv"] }
|
|
15
|
-
eppo_core = { version = "4.1.
|
|
15
|
+
eppo_core = { version = "4.1.1", features = ["vendored"] }
|
|
16
16
|
log = { version = "0.4.21", features = ["kv_serde"] }
|
|
17
17
|
magnus = { version = "0.6.4" }
|
|
18
18
|
serde = { version = "1.0.203", features = ["derive"] }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
use std::{cell::RefCell, sync::Arc, time::Duration};
|
|
1
|
+
use std::{cell::RefCell, str::FromStr, sync::Arc, time::Duration};
|
|
2
2
|
|
|
3
3
|
use eppo_core::{
|
|
4
4
|
configuration_fetcher::{ConfigurationFetcher, ConfigurationFetcherConfig},
|
|
@@ -19,6 +19,7 @@ pub struct Config {
|
|
|
19
19
|
base_url: String,
|
|
20
20
|
poll_interval: Option<Duration>,
|
|
21
21
|
poll_jitter: Duration,
|
|
22
|
+
log_level: Option<log::LevelFilter>,
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
impl TryConvert for Config {
|
|
@@ -29,11 +30,22 @@ impl TryConvert for Config {
|
|
|
29
30
|
let poll_interval_seconds =
|
|
30
31
|
Option::<u64>::try_convert(val.funcall("poll_interval_seconds", ())?)?;
|
|
31
32
|
let poll_jitter_seconds = u64::try_convert(val.funcall("poll_jitter_seconds", ())?)?;
|
|
33
|
+
|
|
34
|
+
let log_level = {
|
|
35
|
+
let s = Option::<String>::try_convert(val.funcall("log_level", ())?)?;
|
|
36
|
+
s.map(|s| {
|
|
37
|
+
log::LevelFilter::from_str(&s)
|
|
38
|
+
.map_err(|err| Error::new(exception::runtime_error(), err.to_string()))
|
|
39
|
+
})
|
|
40
|
+
.transpose()?
|
|
41
|
+
};
|
|
42
|
+
|
|
32
43
|
Ok(Config {
|
|
33
44
|
api_key,
|
|
34
45
|
base_url,
|
|
35
46
|
poll_interval: poll_interval_seconds.map(Duration::from_secs),
|
|
36
47
|
poll_jitter: Duration::from_secs(poll_jitter_seconds),
|
|
48
|
+
log_level,
|
|
37
49
|
})
|
|
38
50
|
}
|
|
39
51
|
}
|
|
@@ -52,6 +64,23 @@ pub struct Client {
|
|
|
52
64
|
|
|
53
65
|
impl Client {
|
|
54
66
|
pub fn new(config: Config) -> Client {
|
|
67
|
+
// Initialize logger
|
|
68
|
+
{
|
|
69
|
+
let mut builder = env_logger::Builder::from_env(
|
|
70
|
+
env_logger::Env::new()
|
|
71
|
+
.filter_or("EPPO_LOG", "eppo=info")
|
|
72
|
+
.write_style("EPPO_LOG_STYLE"),
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
if let Some(log_level) = config.log_level {
|
|
76
|
+
builder.filter_module("eppo", log_level);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Logger can only be set once, so we ignore the initialization error here if client is
|
|
80
|
+
// re-initialized.
|
|
81
|
+
let _ = builder.try_init();
|
|
82
|
+
};
|
|
83
|
+
|
|
55
84
|
let configuration_store = Arc::new(ConfigurationStore::new());
|
|
56
85
|
|
|
57
86
|
let poller_thread = if let Some(poll_interval) = config.poll_interval {
|
data/ext/eppo_client/src/lib.rs
CHANGED
|
@@ -14,8 +14,6 @@ pub(crate) const SDK_METADATA: SdkMetadata = SdkMetadata {
|
|
|
14
14
|
|
|
15
15
|
#[magnus::init]
|
|
16
16
|
fn init(ruby: &Ruby) -> Result<(), Error> {
|
|
17
|
-
env_logger::Builder::from_env(env_logger::Env::new().default_filter_or("eppo=debug")).init();
|
|
18
|
-
|
|
19
17
|
let eppo_client = ruby.define_module("EppoClient")?;
|
|
20
18
|
let core = eppo_client.define_module("Core")?;
|
|
21
19
|
|
data/lib/eppo_client/config.rb
CHANGED
|
@@ -6,14 +6,15 @@ require_relative "assignment_logger"
|
|
|
6
6
|
module EppoClient
|
|
7
7
|
# The class for configuring the Eppo client singleton
|
|
8
8
|
class Config
|
|
9
|
-
attr_reader :api_key, :assignment_logger, :base_url, :poll_interval_seconds, :poll_jitter_seconds
|
|
9
|
+
attr_reader :api_key, :assignment_logger, :base_url, :poll_interval_seconds, :poll_jitter_seconds, :log_level
|
|
10
10
|
|
|
11
|
-
def initialize(api_key, assignment_logger: AssignmentLogger.new, base_url: EppoClient::Core::DEFAULT_BASE_URL, poll_interval_seconds: EppoClient::Core::DEFAULT_POLL_INTERVAL_SECONDS, poll_jitter_seconds: EppoClient::Core::DEFAULT_POLL_JITTER_SECONDS, initial_configuration: nil)
|
|
11
|
+
def initialize(api_key, assignment_logger: AssignmentLogger.new, base_url: EppoClient::Core::DEFAULT_BASE_URL, poll_interval_seconds: EppoClient::Core::DEFAULT_POLL_INTERVAL_SECONDS, poll_jitter_seconds: EppoClient::Core::DEFAULT_POLL_JITTER_SECONDS, initial_configuration: nil, log_level: nil)
|
|
12
12
|
@api_key = api_key
|
|
13
13
|
@assignment_logger = assignment_logger
|
|
14
14
|
@base_url = base_url
|
|
15
15
|
@poll_interval_seconds = poll_interval_seconds
|
|
16
16
|
@poll_jitter_seconds = poll_jitter_seconds
|
|
17
|
+
@log_level = log_level
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
def validate
|
data/lib/eppo_client/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: eppo-server-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eppo
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-11-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rb_sys
|
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
74
|
version: 3.3.11
|
|
75
75
|
requirements: []
|
|
76
|
-
rubygems_version: 3.5.
|
|
76
|
+
rubygems_version: 3.5.22
|
|
77
77
|
signing_key:
|
|
78
78
|
specification_version: 4
|
|
79
79
|
summary: Eppo SDK for Ruby
|