Sha256: c1356131b63b14a133e19544338627518a23dcd6b41aebafb08848b55310cc1e

Contents?: true

Size: 1.31 KB

Versions: 3

Compression:

Stored size: 1.31 KB

Contents

module Elastic
  class Configuration
    DEFAULTS = {
      host: '127.0.0.1',
      port: 9200,
      page_size: 20,
      coord_similarity: true,
      import_batch_size: 10_000,
      whiny_indices: false,
      api_client: nil, # set by method
      logger: nil, # set by method
      time_zone: nil # set by method
    }

    attr_accessor :host, :port, :api_client, :index, :page_size, :coord_similarity, :logger,
      :import_batch_size, :whiny_indices, :time_zone

    def initialize
      assign_attributes DEFAULTS
    end

    def reset
      assign_attributes DEFAULTS
    end

    def assign_attributes(_options)
      _options.each { |k, v| public_send("#{k}=", v) }
      self
    end

    def api_client
      @api_client || default_api_client
    end

    def logger
      @logger || default_logger
    end

    def time_zone
      @time_zone || default_time_zone
    end

    def time_zone=(_value)
      _value = ActiveSupport::TimeZone.new(_value) if _value.is_a? String
      @time_zone = _value
    end

    private

    def default_api_client
      @default_api_client ||= Elasticsearch::Client.new host: @host, port: @port
    end

    def default_logger
      @default_logger ||= Logger.new(STDOUT)
    end

    def default_time_zone
      @default_time_zone ||= ActiveSupport::TimeZone.new('UTC')
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
elastic-rails-0.8.1 lib/elastic/configuration.rb
elastic-rails-0.8.0 lib/elastic/configuration.rb
elastic-rails-0.7.0 lib/elastic/configuration.rb