Class: Quonfig::Options

Inherits:
Object
  • Object
show all
Defined in:
lib/quonfig/options.rb

Overview

Options passed to Quonfig::Client at construction time.

Defined Under Namespace

Modules: ON_INITIALIZATION_FAILURE, ON_NO_DEFAULT

Constant Summary collapse

DEFAULT_MAX_PATHS =
1_000
DEFAULT_MAX_KEYS =
100_000
DEFAULT_MAX_EXAMPLE_CONTEXTS =
100_000
DEFAULT_MAX_EVAL_SUMMARIES =
100_000
DEFAULT_DOMAIN =

Hardcoded fallback domain. Overridden by ENV.

'quonfig.com'
DEFAULT_API_URLS =

Hardcoded fallback API URLs (used only when no QUONFIG_DOMAIN is set and no explicit api_urls are provided). Mirrors derive_api_urls(DEFAULT_DOMAIN).

[
  'https://primary.quonfig.com',
  'https://secondary.quonfig.com',
].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Options

Returns a new instance of Options.



166
167
168
# File 'lib/quonfig/options.rb', line 166

def initialize(options = {})
  init(**options)
end

Instance Attribute Details

#api_urlsObject (readonly)

Returns the value of attribute api_urls.



10
11
12
# File 'lib/quonfig/options.rb', line 10

def api_urls
  @api_urls
end

#collect_sync_intervalObject (readonly)

Returns the value of attribute collect_sync_interval.



17
18
19
# File 'lib/quonfig/options.rb', line 17

def collect_sync_interval
  @collect_sync_interval
end

#config_api_urlsObject (readonly)

Returns the value of attribute config_api_urls.



13
14
15
# File 'lib/quonfig/options.rb', line 13

def config_api_urls
  @config_api_urls
end

#datadirObject (readonly)

Returns the value of attribute datadir.



18
19
20
# File 'lib/quonfig/options.rb', line 18

def datadir
  @datadir
end

#enable_pollingObject (readonly)

Returns the value of attribute enable_polling.



20
21
22
# File 'lib/quonfig/options.rb', line 20

def enable_polling
  @enable_polling
end

#enable_quonfig_user_contextObject (readonly)

Returns the value of attribute enable_quonfig_user_context.



24
25
26
# File 'lib/quonfig/options.rb', line 24

def enable_quonfig_user_context
  @enable_quonfig_user_context
end

#enable_sseObject (readonly)

Returns the value of attribute enable_sse.



19
20
21
# File 'lib/quonfig/options.rb', line 19

def enable_sse
  @enable_sse
end

#environmentObject (readonly)

Returns the value of attribute environment.



9
10
11
# File 'lib/quonfig/options.rb', line 9

def environment
  @environment
end

#global_contextObject (readonly)

Returns the value of attribute global_context.



22
23
24
# File 'lib/quonfig/options.rb', line 22

def global_context
  @global_context
end

#initialization_timeout_secObject (readonly)

Returns the value of attribute initialization_timeout_sec.



15
16
17
# File 'lib/quonfig/options.rb', line 15

def initialization_timeout_sec
  @initialization_timeout_sec
end

#is_forkObject

Returns the value of attribute is_fork.



25
26
27
# File 'lib/quonfig/options.rb', line 25

def is_fork
  @is_fork
end

#logger_keyObject (readonly)

Returns the value of attribute logger_key.



23
24
25
# File 'lib/quonfig/options.rb', line 23

def logger_key
  @logger_key
end

#on_init_failureObject (readonly)

Returns the value of attribute on_init_failure.



16
17
18
# File 'lib/quonfig/options.rb', line 16

def on_init_failure
  @on_init_failure
end

#on_no_defaultObject (readonly)

Returns the value of attribute on_no_default.



14
15
16
# File 'lib/quonfig/options.rb', line 14

def on_no_default
  @on_no_default
end

#poll_intervalObject (readonly)

Returns the value of attribute poll_interval.



21
22
23
# File 'lib/quonfig/options.rb', line 21

def poll_interval
  @poll_interval
end

#sdk_keyObject (readonly)

Returns the value of attribute sdk_key.



8
9
10
# File 'lib/quonfig/options.rb', line 8

def sdk_key
  @sdk_key
end

#sse_api_urlsObject (readonly)

Returns the value of attribute sse_api_urls.



11
12
13
# File 'lib/quonfig/options.rb', line 11

def sse_api_urls
  @sse_api_urls
end

#telemetry_destinationObject (readonly)

Returns the value of attribute telemetry_destination.



12
13
14
# File 'lib/quonfig/options.rb', line 12

def telemetry_destination
  @telemetry_destination
end

Class Method Details

.derive_api_urls(domain) ⇒ Object

Derive default api_urls for a given domain. e.g. for domain ‘quonfig-staging.com` returns `[“primary.quonfig-staging.com”, “secondary.quonfig-staging.com”]`.



62
63
64
65
66
67
# File 'lib/quonfig/options.rb', line 62

def self.derive_api_urls(domain)
  [
    "https://primary.#{domain}",
    "https://secondary.#{domain}",
  ]
end

.derive_stream_url(api_url) ⇒ Object

Derive the SSE stream URL for a given API URL by prepending ‘stream.` to the hostname. Preserves scheme, port, and path.

derive_stream_url('https://primary.quonfig.com')
  # => 'https://stream.primary.quonfig.com'
derive_stream_url('http://localhost:6550')
  # => 'http://stream.localhost:6550'


81
82
83
84
85
# File 'lib/quonfig/options.rb', line 81

def self.derive_stream_url(api_url)
  uri = URI.parse(api_url)
  uri.host = "stream.#{uri.host}" if uri.host
  uri.to_s
end

.derive_telemetry_url(domain) ⇒ Object

Derive the telemetry URL for a given domain.



70
71
72
# File 'lib/quonfig/options.rb', line 70

def self.derive_telemetry_url(domain)
  "https://telemetry.#{domain}"
end

.domainObject

Resolve the active domain. Reads QUONFIG_DOMAIN; falls back to DEFAULT_DOMAIN. Mirrors ‘cli/src/util/domain-urls.ts#getDomain`.



54
55
56
57
# File 'lib/quonfig/options.rb', line 54

def self.domain
  env = ENV['QUONFIG_DOMAIN']
  env && !env.empty? ? env : DEFAULT_DOMAIN
end

Instance Method Details

#collect_max_evaluation_summariesObject



198
199
200
201
202
# File 'lib/quonfig/options.rb', line 198

def collect_max_evaluation_summaries
  return 0 unless telemetry_allowed?(@collect_evaluation_summaries)

  @collect_max_evaluation_summaries
end

#collect_max_example_contextsObject



192
193
194
195
196
# File 'lib/quonfig/options.rb', line 192

def collect_max_example_contexts
  return 0 unless telemetry_allowed?(@collect_example_contexts)

  @collect_max_example_contexts
end

#collect_max_pathsObject



180
181
182
183
184
# File 'lib/quonfig/options.rb', line 180

def collect_max_paths
  return 0 unless telemetry_allowed?(true)

  @collect_max_paths
end

#collect_max_shapesObject



186
187
188
189
190
# File 'lib/quonfig/options.rb', line 186

def collect_max_shapes
  return 0 unless telemetry_allowed?(@collect_shapes)

  @collect_max_shapes
end

#datadir?Boolean

Returns:

  • (Boolean)


176
177
178
# File 'lib/quonfig/options.rb', line 176

def datadir?
  !@datadir.nil?
end

#for_forkObject



208
209
210
211
212
# File 'lib/quonfig/options.rb', line 208

def for_fork
  clone = self.clone
  clone.is_fork = true
  clone
end

#local_only?Boolean

In datadir mode the SDK evaluates config from a local workspace and does not connect to the delivery service.

Returns:

  • (Boolean)


172
173
174
# File 'lib/quonfig/options.rb', line 172

def local_only?
  !@datadir.nil?
end

#sdk_key_idObject



204
205
206
# File 'lib/quonfig/options.rb', line 204

def sdk_key_id
  @sdk_key&.split('-')&.first
end