Class: GetStreamRuby::Configuration
- Inherits:
-
Object
- Object
- GetStreamRuby::Configuration
- Defined in:
- lib/getstream_ruby/configuration.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
Returns the value of attribute api_key.
-
#api_secret ⇒ Object
Returns the value of attribute api_secret.
-
#base_url ⇒ Object
Returns the value of attribute base_url.
-
#connect_timeout ⇒ Object
Returns the value of attribute connect_timeout.
-
#connection_keep_alive ⇒ Object
Returns the value of attribute connection_keep_alive.
-
#faraday_adapter ⇒ Object
Returns the value of attribute faraday_adapter.
-
#faraday_adapter_options ⇒ Object
Returns the value of attribute faraday_adapter_options.
-
#http_client ⇒ Object
Returns the value of attribute http_client.
-
#idle_timeout ⇒ Object
Returns the value of attribute idle_timeout.
-
#log_bodies ⇒ Object
Returns the value of attribute log_bodies.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#max_conns_per_host ⇒ Object
Returns the value of attribute max_conns_per_host.
-
#request_timeout ⇒ Object
Returns the value of attribute request_timeout.
-
#retry_config ⇒ Object
Returns the value of attribute retry_config.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
Class Method Summary collapse
-
.from_env ⇒ Object
Method 2: .env file (loads .env file via dotenv gem, falls back to env vars).
-
.from_system_env ⇒ Object
Method 3: Environment variables (no .env file, direct system env).
-
.manual(api_key:, api_secret:, **options) ⇒ Object
Method 1: Manual configuration (no environment variables).
-
.with_overrides(overrides = {}) ⇒ Object
Class method to create configuration with overrides.
Instance Method Summary collapse
- #dup ⇒ Object
-
#initialize(api_key: nil, api_secret: nil, use_env: true, **options) ⇒ Configuration
constructor
A new instance of Configuration.
-
#log_pool_config_to(logger) ⇒ Object
Emit the
client.initializedINFO event once at construction (structured logging spec §6.1). - #valid? ⇒ Boolean
- #validate! ⇒ Object
-
#warn_pool_fallback(fallback_adapter, error) ⇒ Object
Emit a WARNING that the requested adapter could not be built and pooling is disabled (CHA-2956).
Constructor Details
#initialize(api_key: nil, api_secret: nil, use_env: true, **options) ⇒ Configuration
Returns a new instance of Configuration.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/getstream_ruby/configuration.rb', line 13 def initialize(api_key: nil, api_secret: nil, use_env: true, **) = [:http_options] || {} assign_credentials_and_url(api_key, api_secret, [:base_url], use_env: use_env) assign_timeouts_and_pool(, use_env: use_env) assign_adapter(, ) assign_keep_alive(, ) # Keep @timeout in sync with @request_timeout for backwards compatibility. @timeout = @request_timeout @http_client = [:http_client] @logger = [:logger] @log_bodies = [:log_bodies] || false @retry_config = [:retry_config] || RetryConfig.new end |
Instance Attribute Details
#api_key ⇒ Object
Returns the value of attribute api_key.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def api_key @api_key end |
#api_secret ⇒ Object
Returns the value of attribute api_secret.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def api_secret @api_secret end |
#base_url ⇒ Object
Returns the value of attribute base_url.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def base_url @base_url end |
#connect_timeout ⇒ Object
Returns the value of attribute connect_timeout.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def connect_timeout @connect_timeout end |
#connection_keep_alive ⇒ Object
Returns the value of attribute connection_keep_alive.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def connection_keep_alive @connection_keep_alive end |
#faraday_adapter ⇒ Object
Returns the value of attribute faraday_adapter.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def faraday_adapter @faraday_adapter end |
#faraday_adapter_options ⇒ Object
Returns the value of attribute faraday_adapter_options.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def @faraday_adapter_options end |
#http_client ⇒ Object
Returns the value of attribute http_client.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def http_client @http_client end |
#idle_timeout ⇒ Object
Returns the value of attribute idle_timeout.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def idle_timeout @idle_timeout end |
#log_bodies ⇒ Object
Returns the value of attribute log_bodies.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def log_bodies @log_bodies end |
#logger ⇒ Object
Returns the value of attribute logger.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def logger @logger end |
#max_conns_per_host ⇒ Object
Returns the value of attribute max_conns_per_host.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def max_conns_per_host @max_conns_per_host end |
#request_timeout ⇒ Object
Returns the value of attribute request_timeout.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def request_timeout @request_timeout end |
#retry_config ⇒ Object
Returns the value of attribute retry_config.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def retry_config @retry_config end |
#timeout ⇒ Object
Returns the value of attribute timeout.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def timeout @timeout end |
Class Method Details
.from_env ⇒ Object
Method 2: .env file (loads .env file via dotenv gem, falls back to env vars)
101 102 103 104 |
# File 'lib/getstream_ruby/configuration.rb', line 101 def self.from_env require 'dotenv/load' if File.exist?('.env') && !File.empty?('.env') && !defined?(Dotenv) new(use_env: true) end |
.from_system_env ⇒ Object
Method 3: Environment variables (no .env file, direct system env)
107 108 109 |
# File 'lib/getstream_ruby/configuration.rb', line 107 def self.from_system_env new(use_env: true) end |
.manual(api_key:, api_secret:, **options) ⇒ Object
Method 1: Manual configuration (no environment variables)
96 97 98 |
# File 'lib/getstream_ruby/configuration.rb', line 96 def self.manual(api_key:, api_secret:, **) new(api_key: api_key, api_secret: api_secret, use_env: false, **) end |
.with_overrides(overrides = {}) ⇒ Object
Class method to create configuration with overrides
91 92 93 |
# File 'lib/getstream_ruby/configuration.rb', line 91 def self.with_overrides(overrides = {}) new(**overrides) end |
Instance Method Details
#dup ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/getstream_ruby/configuration.rb', line 38 def dup Configuration.new( api_key: @api_key, api_secret: @api_secret, base_url: @base_url, timeout: @timeout, request_timeout: @request_timeout, max_conns_per_host: @max_conns_per_host, idle_timeout: @idle_timeout, connect_timeout: @connect_timeout, http_client: @http_client, faraday_adapter: @faraday_adapter, faraday_adapter_options: @faraday_adapter_options.dup, connection_keep_alive: @connection_keep_alive, logger: @logger, log_bodies: @log_bodies, retry_config: @retry_config, ) end |
#log_pool_config_to(logger) ⇒ Object
Emit the client.initialized INFO event once at construction (structured
logging spec §6.1). A no-op when no logger is configured: unlike
warn_pool_fallback below, a quiet start-up here is expected, not a
silently-swallowed problem, so there is no $stdout fallback.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/getstream_ruby/configuration.rb', line 62 def log_pool_config_to(logger) return if logger.nil? fields = { 'stream.sdk.name' => 'getstream-ruby', 'stream.sdk.version' => VERSION, 'stream.client.max_conns_per_host' => @max_conns_per_host, 'stream.client.idle_timeout_seconds' => @idle_timeout, 'stream.client.connect_timeout_seconds' => @connect_timeout, 'stream.client.request_timeout_seconds' => @request_timeout, 'stream.client.gzip_enabled' => true, 'stream.client.user_http_client' => !@http_client.nil?, 'stream.client.log_bodies' => @log_bodies, } logger.info { "client.initialized #{fields.map { |k, v| "#{k}=#{v}" }.join(' ')}" } end |
#valid? ⇒ Boolean
29 30 31 |
# File 'lib/getstream_ruby/configuration.rb', line 29 def valid? api_key && api_secret end |
#validate! ⇒ Object
33 34 35 36 |
# File 'lib/getstream_ruby/configuration.rb', line 33 def validate! raise ConfigurationError, 'API key is required' unless api_key raise ConfigurationError, 'API secret is required' unless api_secret end |
#warn_pool_fallback(fallback_adapter, error) ⇒ Object
Emit a WARNING that the requested adapter could not be built and pooling is disabled (CHA-2956). A fallback must never be silent, so unlike the structured-logging events below, this uses a default $stdout logger when none is configured.
83 84 85 86 87 88 |
# File 'lib/getstream_ruby/configuration.rb', line 83 def warn_pool_fallback(fallback_adapter, error) warn_logger = @logger || Logger.new($stdout).tap { |l| l.level = Logger::WARN } warn_logger.warn( "Falling back to #{fallback_adapter}: could not configure net_http_persistent (#{error.})", ) end |