Class: Toggly::Config
- Inherits:
-
Object
- Object
- Toggly::Config
- Defined in:
- lib/toggly/config.rb
Overview
Configuration for the Toggly client.
Constant Summary collapse
- DEFAULT_BASE_URL =
Default values
"https://definitions.toggly.io/"- DEFAULT_REFRESH_INTERVAL =
5 minutes
300- DEFAULT_HTTP_TIMEOUT =
seconds
10- DEFAULT_ENVIRONMENT =
"Production"
Instance Attribute Summary collapse
-
#allowed_key_ids ⇒ Array<String>
Allowed key IDs for signed definitions.
-
#app_key ⇒ String
Application key from Toggly dashboard.
-
#app_version ⇒ String
Application version.
-
#base_url ⇒ String
Base URL for Toggly API.
-
#defaults ⇒ Hash<String, Boolean>
Default feature values for offline mode.
-
#definitions_url ⇒ String
Definitions URL (overrides base_url for definitions).
-
#disable_background_refresh ⇒ Boolean
Disable background refresh.
-
#disable_entity_context_registration ⇒ Object
Returns the value of attribute disable_entity_context_registration.
-
#enable_live_updates ⇒ Boolean
Enable WebSocket live updates (default: true).
-
#enable_undefined_in_dev ⇒ Boolean
Enable undefined features in development.
-
#environment ⇒ String
Environment name (e.g., "Production", "Staging").
-
#http_timeout ⇒ Integer
HTTP timeout in seconds.
-
#instance_name ⇒ String
Instance name for distributed systems.
-
#logger ⇒ Logger?
Logger instance.
-
#refresh_interval ⇒ Integer
Refresh interval in seconds.
-
#snapshot_provider ⇒ SnapshotProviders::Base?
Snapshot provider for persistence.
-
#use_signed_definitions ⇒ Boolean
Use signed definitions.
Instance Method Summary collapse
-
#definitions_endpoint ⇒ String
Get the definitions endpoint URL.
-
#initialize(**options) ⇒ Config
constructor
A new instance of Config.
-
#offline_mode? ⇒ Boolean
Check if running in offline mode (defaults only).
-
#to_h ⇒ Hash
Convert to hash.
-
#validate! ⇒ Object
Validate the configuration.
Constructor Details
#initialize(**options) ⇒ Config
Returns a new instance of Config.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/toggly/config.rb', line 67 def initialize(**) @app_key = [:app_key] @environment = [:environment] || DEFAULT_ENVIRONMENT @base_url = normalize_url([:base_url] || DEFAULT_BASE_URL) @definitions_url = [:definitions_url] @refresh_interval = [:refresh_interval] || DEFAULT_REFRESH_INTERVAL @http_timeout = [:http_timeout] || DEFAULT_HTTP_TIMEOUT @enable_undefined_in_dev = [:enable_undefined_in_dev] || false @disable_background_refresh = [:disable_background_refresh] || false @enable_live_updates = .fetch(:enable_live_updates, true) @disable_entity_context_registration = .fetch(:disable_entity_context_registration, false) @app_version = [:app_version] @instance_name = [:instance_name] @defaults = [:defaults] || {} @snapshot_provider = [:snapshot_provider] @use_signed_definitions = [:use_signed_definitions] || false @allowed_key_ids = [:allowed_key_ids] || [] @logger = [:logger] end |
Instance Attribute Details
#allowed_key_ids ⇒ Array<String>
Returns Allowed key IDs for signed definitions.
56 57 58 |
# File 'lib/toggly/config.rb', line 56 def allowed_key_ids @allowed_key_ids end |
#app_key ⇒ String
Returns Application key from Toggly dashboard.
13 14 15 |
# File 'lib/toggly/config.rb', line 13 def app_key @app_key end |
#app_version ⇒ String
Returns Application version.
41 42 43 |
# File 'lib/toggly/config.rb', line 41 def app_version @app_version end |
#base_url ⇒ String
Returns Base URL for Toggly API.
19 20 21 |
# File 'lib/toggly/config.rb', line 19 def base_url @base_url end |
#defaults ⇒ Hash<String, Boolean>
Returns Default feature values for offline mode.
47 48 49 |
# File 'lib/toggly/config.rb', line 47 def defaults @defaults end |
#definitions_url ⇒ String
Returns Definitions URL (overrides base_url for definitions).
22 23 24 |
# File 'lib/toggly/config.rb', line 22 def definitions_url @definitions_url end |
#disable_background_refresh ⇒ Boolean
Returns Disable background refresh.
34 35 36 |
# File 'lib/toggly/config.rb', line 34 def disable_background_refresh @disable_background_refresh end |
#disable_entity_context_registration ⇒ Object
Returns the value of attribute disable_entity_context_registration.
38 39 40 |
# File 'lib/toggly/config.rb', line 38 def disable_entity_context_registration @disable_entity_context_registration end |
#enable_live_updates ⇒ Boolean
Returns Enable WebSocket live updates (default: true).
37 38 39 |
# File 'lib/toggly/config.rb', line 37 def enable_live_updates @enable_live_updates end |
#enable_undefined_in_dev ⇒ Boolean
Returns Enable undefined features in development.
31 32 33 |
# File 'lib/toggly/config.rb', line 31 def enable_undefined_in_dev @enable_undefined_in_dev end |
#environment ⇒ String
Returns Environment name (e.g., "Production", "Staging").
16 17 18 |
# File 'lib/toggly/config.rb', line 16 def environment @environment end |
#http_timeout ⇒ Integer
Returns HTTP timeout in seconds.
28 29 30 |
# File 'lib/toggly/config.rb', line 28 def http_timeout @http_timeout end |
#instance_name ⇒ String
Returns Instance name for distributed systems.
44 45 46 |
# File 'lib/toggly/config.rb', line 44 def instance_name @instance_name end |
#logger ⇒ Logger?
Returns Logger instance.
59 60 61 |
# File 'lib/toggly/config.rb', line 59 def logger @logger end |
#refresh_interval ⇒ Integer
Returns Refresh interval in seconds.
25 26 27 |
# File 'lib/toggly/config.rb', line 25 def refresh_interval @refresh_interval end |
#snapshot_provider ⇒ SnapshotProviders::Base?
Returns Snapshot provider for persistence.
50 51 52 |
# File 'lib/toggly/config.rb', line 50 def snapshot_provider @snapshot_provider end |
#use_signed_definitions ⇒ Boolean
Returns Use signed definitions.
53 54 55 |
# File 'lib/toggly/config.rb', line 53 def use_signed_definitions @use_signed_definitions end |
Instance Method Details
#definitions_endpoint ⇒ String
Get the definitions endpoint URL
90 91 92 93 94 |
# File 'lib/toggly/config.rb', line 90 def definitions_endpoint base = @definitions_url || @base_url endpoint = @use_signed_definitions ? "definitions-signed" : "definitions" "#{normalize_url(base)}#{endpoint}/#{@app_key}/#{@environment}" end |
#offline_mode? ⇒ Boolean
Check if running in offline mode (defaults only)
109 110 111 |
# File 'lib/toggly/config.rb', line 109 def offline_mode? (@app_key.nil? || @app_key.empty?) && !@defaults.empty? end |
#to_h ⇒ Hash
Convert to hash
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/toggly/config.rb', line 116 def to_h { app_key: @app_key, environment: @environment, base_url: @base_url, definitions_url: @definitions_url, refresh_interval: @refresh_interval, http_timeout: @http_timeout, enable_undefined_in_dev: @enable_undefined_in_dev, disable_background_refresh: @disable_background_refresh, enable_live_updates: @enable_live_updates, app_version: @app_version, instance_name: @instance_name, use_signed_definitions: @use_signed_definitions } end |
#validate! ⇒ Object
Validate the configuration
99 100 101 102 103 104 |
# File 'lib/toggly/config.rb', line 99 def validate! return if offline_mode? raise ConfigError, "app_key is required" if @app_key.nil? || @app_key.empty? raise ConfigError, "environment is required" if @environment.nil? || @environment.empty? end |