Class: Toggly::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/toggly/config.rb

Overview

Configuration for the Toggly client.

Examples:

config = Toggly::Config.new(
  app_key: "your-app-key",
  environment: "Production"
)

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

Instance Method Summary collapse

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(**options)
  @app_key = options[:app_key]
  @environment = options[:environment] || DEFAULT_ENVIRONMENT
  @base_url = normalize_url(options[:base_url] || DEFAULT_BASE_URL)
  @definitions_url = options[:definitions_url]
  @refresh_interval = options[:refresh_interval] || DEFAULT_REFRESH_INTERVAL
  @http_timeout = options[:http_timeout] || DEFAULT_HTTP_TIMEOUT
  @enable_undefined_in_dev = options[:enable_undefined_in_dev] || false
  @disable_background_refresh = options[:disable_background_refresh] || false
  @enable_live_updates = options.fetch(:enable_live_updates, true)
  @disable_entity_context_registration = options.fetch(:disable_entity_context_registration, false)
  @app_version = options[:app_version]
  @instance_name = options[:instance_name]
  @defaults = options[:defaults] || {}
  @snapshot_provider = options[:snapshot_provider]
  @use_signed_definitions = options[:use_signed_definitions] || false
  @allowed_key_ids = options[:allowed_key_ids] || []
  @logger = options[:logger]
end

Instance Attribute Details

#allowed_key_idsArray<String>

Returns Allowed key IDs for signed definitions.

Returns:

  • (Array<String>)

    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_keyString

Returns Application key from Toggly dashboard.

Returns:

  • (String)

    Application key from Toggly dashboard



13
14
15
# File 'lib/toggly/config.rb', line 13

def app_key
  @app_key
end

#app_versionString

Returns Application version.

Returns:

  • (String)

    Application version



41
42
43
# File 'lib/toggly/config.rb', line 41

def app_version
  @app_version
end

#base_urlString

Returns Base URL for Toggly API.

Returns:

  • (String)

    Base URL for Toggly API



19
20
21
# File 'lib/toggly/config.rb', line 19

def base_url
  @base_url
end

#defaultsHash<String, Boolean>

Returns Default feature values for offline mode.

Returns:

  • (Hash<String, Boolean>)

    Default feature values for offline mode



47
48
49
# File 'lib/toggly/config.rb', line 47

def defaults
  @defaults
end

#definitions_urlString

Returns Definitions URL (overrides base_url for definitions).

Returns:

  • (String)

    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_refreshBoolean

Returns Disable background refresh.

Returns:

  • (Boolean)

    Disable background refresh



34
35
36
# File 'lib/toggly/config.rb', line 34

def disable_background_refresh
  @disable_background_refresh
end

#disable_entity_context_registrationObject

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_updatesBoolean

Returns Enable WebSocket live updates (default: true).

Returns:

  • (Boolean)

    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_devBoolean

Returns Enable undefined features in development.

Returns:

  • (Boolean)

    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

#environmentString

Returns Environment name (e.g., "Production", "Staging").

Returns:

  • (String)

    Environment name (e.g., "Production", "Staging")



16
17
18
# File 'lib/toggly/config.rb', line 16

def environment
  @environment
end

#http_timeoutInteger

Returns HTTP timeout in seconds.

Returns:

  • (Integer)

    HTTP timeout in seconds



28
29
30
# File 'lib/toggly/config.rb', line 28

def http_timeout
  @http_timeout
end

#instance_nameString

Returns Instance name for distributed systems.

Returns:

  • (String)

    Instance name for distributed systems



44
45
46
# File 'lib/toggly/config.rb', line 44

def instance_name
  @instance_name
end

#loggerLogger?

Returns Logger instance.

Returns:

  • (Logger, nil)

    Logger instance



59
60
61
# File 'lib/toggly/config.rb', line 59

def logger
  @logger
end

#refresh_intervalInteger

Returns Refresh interval in seconds.

Returns:

  • (Integer)

    Refresh interval in seconds



25
26
27
# File 'lib/toggly/config.rb', line 25

def refresh_interval
  @refresh_interval
end

#snapshot_providerSnapshotProviders::Base?

Returns Snapshot provider for persistence.

Returns:



50
51
52
# File 'lib/toggly/config.rb', line 50

def snapshot_provider
  @snapshot_provider
end

#use_signed_definitionsBoolean

Returns Use signed definitions.

Returns:

  • (Boolean)

    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_endpointString

Get the definitions endpoint URL

Returns:

  • (String)


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)

Returns:

  • (Boolean)


109
110
111
# File 'lib/toggly/config.rb', line 109

def offline_mode?
  (@app_key.nil? || @app_key.empty?) && !@defaults.empty?
end

#to_hHash

Convert to hash

Returns:

  • (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

Raises:



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