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.
-
#effective_adapter ⇒ Object
Returns the value of attribute effective_adapter.
-
#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.
-
#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.
-
#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 a single INFO line listing the 5 effective pool knobs plus the active escape hatch (CHA-2956).
- #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 |
# 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] 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 |
#effective_adapter ⇒ Object
Returns the value of attribute effective_adapter.
9 10 11 |
# File 'lib/getstream_ruby/configuration.rb', line 9 def effective_adapter @effective_adapter 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 |
#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 |
#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)
104 105 106 107 |
# File 'lib/getstream_ruby/configuration.rb', line 104 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)
110 111 112 |
# File 'lib/getstream_ruby/configuration.rb', line 110 def self.from_system_env new(use_env: true) end |
.manual(api_key:, api_secret:, **options) ⇒ Object
Method 1: Manual configuration (no environment variables)
99 100 101 |
# File 'lib/getstream_ruby/configuration.rb', line 99 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
94 95 96 |
# File 'lib/getstream_ruby/configuration.rb', line 94 def self.with_overrides(overrides = {}) new(**overrides) end |
Instance Method Details
#dup ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/getstream_ruby/configuration.rb', line 36 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, ) end |
#log_pool_config_to(logger) ⇒ Object
Emit a single INFO line listing the 5 effective pool knobs plus the active escape hatch (CHA-2956). If no logger is supplied, a default $stdout INFO logger is used. The faraday_adapter label reflects the adapter actually built (effective_adapter, set by Client#configure_adapter) so a silent fallback to the default adapter is never misreported as the requested adapter.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/getstream_ruby/configuration.rb', line 59 def log_pool_config_to(logger) logger ||= Logger.new($stdout).tap { |l| l.level = Logger::INFO } flag = @http_client ? 'user_http_client=true' : 'user_http_client=false' adapter_label = if @http_client 'user-supplied' elsif @effective_adapter @effective_adapter elsif @faraday_adapter @faraday_adapter.to_s else 'default' end fmt = 'connection pool: max_conns_per_host=%<m>d idle_timeout=%<i>d ' \ 'connect_timeout=%<c>d request_timeout=%<r>d %<flag>s faraday_adapter=%<a>s' logger.info( format( fmt, m: @max_conns_per_host, i: @idle_timeout, c: @connect_timeout, r: @request_timeout, flag: flag, a: adapter_label ), ) end |
#valid? ⇒ Boolean
27 28 29 |
# File 'lib/getstream_ruby/configuration.rb', line 27 def valid? api_key && api_secret end |
#validate! ⇒ Object
31 32 33 34 |
# File 'lib/getstream_ruby/configuration.rb', line 31 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 when no logger is configured this uses a default $stdout logger, exactly like log_pool_config_to.
86 87 88 89 90 91 |
# File 'lib/getstream_ruby/configuration.rb', line 86 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 |