class Solr::Configuration

Constants

SOLRB_USER_AGENT_HEADER

Attributes

auth_password[RW]
auth_user[RW]
cloud_configuration[R]
cores[RW]
faraday_configuration[R]
faraday_options[R]
logger[W]
master_slave_configuration[R]
test_connection[RW]
url[RW]

Public Class Methods

new() click to toggle source
# File lib/solr/configuration.rb, line 28
def initialize
  @faraday_options = {
    request: { timeout: 2, open_timeout: 8 },
    headers: SOLRB_USER_AGENT_HEADER
  }
  @faraday_configuration = nil
  @cores = {}
  @cloud_configuration = Solr::Cloud::Configuration.new
  @master_slave_configuration = Solr::MasterSlave::Configuration.new
end

Public Instance Methods

build_env_url_core_config(name: nil) click to toggle source
# File lib/solr/configuration.rb, line 86
def build_env_url_core_config(name: nil)
  name ||= core_name_from_solr_url_env
  Solr::CoreConfiguration::EnvUrlCoreConfig.new(name: name)
end
core_config_by_name(core) click to toggle source
# File lib/solr/configuration.rb, line 49
def core_config_by_name(core)
  cores[core.to_sym] || build_env_url_core_config(name: core)
end
core_name_from_solr_url_env() click to toggle source
# File lib/solr/configuration.rb, line 75
def core_name_from_solr_url_env
  full_solr_core_uri = URI.parse(ENV['SOLR_URL'])
  core_name = full_solr_core_uri.path.gsub('/solr', '').delete('/')

  if !core_name || core_name == ''
    raise Solr::Errors::CouldNotInferImplicitCoreName
  end

  core_name
end
default_core_config() click to toggle source
# File lib/solr/configuration.rb, line 53
def default_core_config
  defined_default_core_config = cores.values.detect(&:default?)
  return defined_default_core_config if defined_default_core_config
  raise Solr::Errors::AmbiguousCoreError if cores.count > 1
  cores.values.first || build_env_url_core_config
end
define_core(name: nil, default: false) { |builder| ... } click to toggle source
# File lib/solr/configuration.rb, line 60
def define_core(name: nil, default: false)
  validate_default_core_config!(default: default)
  builder = Solr::CoreConfiguration::CoreConfigBuilder.new(
    name: name,
    default: default
  )
  yield builder
  core = builder.build
  if cores.has_key?(core.name)
    raise "A core with name '#{core.name}' has been already defined"
  else
    cores[core.name] = core
  end
end
faraday_configure(&block) click to toggle source
# File lib/solr/configuration.rb, line 45
def faraday_configure(&block)
  @faraday_configuration = block
end
faraday_options=(options) click to toggle source
# File lib/solr/configuration.rb, line 39
def faraday_options=(options)
  options[:headers] ||= {}
  options[:headers].merge!(SOLRB_USER_AGENT_HEADER)
  @faraday_options = options
end
logger() click to toggle source
# File lib/solr/configuration.rb, line 107
def logger
  @logger || null_logger
end
validate!() click to toggle source
# File lib/solr/configuration.rb, line 98
def validate!
  if !(url ||
       @cloud_configuration.zookeeper_url ||
       (@master_slave_configuration.master_url && @master_slave_configuration.slave_url) ||
       ENV['SOLR_URL'])
    raise Solr::Errors::SolrUrlNotDefinedError
  end
end
validate_default_core_config!(default:) click to toggle source
# File lib/solr/configuration.rb, line 91
def validate_default_core_config!(default:)
  return unless default
  if cores.any? { |name, core_config| core_config.default? }
    raise ArgumentError, 'Only one default core can be specified'
  end
end

Private Instance Methods

null_logger() click to toggle source
# File lib/solr/configuration.rb, line 113
def null_logger
  @null_logger ||= ::Logger.new(IO::NULL)
end