class Typesense::Configuration

Attributes

api_key[RW]
connection_timeout_seconds[RW]
healthcheck_interval_seconds[RW]
log_level[RW]
logger[RW]
nearest_node[RW]
nodes[RW]
num_retries[RW]
retry_interval_seconds[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/typesense/configuration.rb, line 9
def initialize(options = {})
  @nodes = options[:nodes] || []
  @nearest_node = options[:nearest_node]
  @connection_timeout_seconds = options[:connection_timeout_seconds] || options[:timeout_seconds] || 10
  @healthcheck_interval_seconds = options[:healthcheck_interval_seconds] || 15
  @num_retries = options[:num_retries] || @nodes.length + (@nearest_node.nil? ? 0 : 1) || 3
  @retry_interval_seconds = options[:retry_interval_seconds] || 0.1
  @api_key = options[:api_key]

  @logger = options[:logger] || Logger.new($stdout)
  @log_level = options[:log_level] || Logger::WARN
  @logger.level = @log_level

  show_deprecation_warnings(options)
  validate!
end

Public Instance Methods

validate!() click to toggle source
# File lib/typesense/configuration.rb, line 26
def validate!
  if @nodes.nil? ||
     @nodes.empty? ||
     @nodes.any? { |node| node_missing_parameters?(node) }
    raise Error::MissingConfiguration, 'Missing required configuration. Ensure that nodes[][:protocol], nodes[][:host] and nodes[][:port] are set.'
  end

  raise Error::MissingConfiguration, 'Missing required configuration. Ensure that api_key is set.' if @api_key.nil?
end

Private Instance Methods

node_missing_parameters?(node) click to toggle source
# File lib/typesense/configuration.rb, line 38
def node_missing_parameters?(node)
  %i[protocol host port].any? { |attr| node.send(:[], attr).nil? }
end
show_deprecation_warnings(options) click to toggle source
# File lib/typesense/configuration.rb, line 42
def show_deprecation_warnings(options)
  @logger.warn 'Deprecation warning: timeout_seconds is now renamed to connection_timeout_seconds' unless options[:timeout_seconds].nil?
  @logger.warn 'Deprecation warning: master_node is now consolidated to nodes, starting with Typesense Server v0.12' unless options[:master_node].nil?
  @logger.warn 'Deprecation warning: read_replica_nodes is now consolidated to nodes, starting with Typesense Server v0.12' unless options[:read_replica_nodes].nil?
end