Class: SolrWrapper::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/solr_wrapper/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Configuration

Returns a new instance of Configuration.



8
9
10
11
12
13
14
# File 'lib/solr_wrapper/configuration.rb', line 8

def initialize(options = {})
  @config = options[:config]
  @verbose = options[:verbose]

  @options = load_configs(Array(options[:config])).merge(options)
  @options[:env] ||= ENV
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



6
7
8
# File 'lib/solr_wrapper/configuration.rb', line 6

def options
  @options
end

Instance Method Details

#algorithmObject



36
37
38
# File 'lib/solr_wrapper/configuration.rb', line 36

def algorithm
  options[:algorithm]
end

#archive_download_urlObject



142
143
144
# File 'lib/solr_wrapper/configuration.rb', line 142

def archive_download_url
  "https://archive.apache.org/dist/#{mirror_artifact_path}"
end

#artifact_pathObject



59
60
61
# File 'lib/solr_wrapper/configuration.rb', line 59

def artifact_path
  options[:artifact_path]
end

#checksumObject



32
33
34
# File 'lib/solr_wrapper/configuration.rb', line 32

def checksum
  options[:checksum]
end

#closest_mirror_urlObject



111
112
113
# File 'lib/solr_wrapper/configuration.rb', line 111

def closest_mirror_url
  "https://www.apache.org/dyn/closer.lua/#{mirror_artifact_path}?asjson=true"
end

#cloudObject



146
147
148
# File 'lib/solr_wrapper/configuration.rb', line 146

def cloud
  options[:cloud]
end

#collection_optionsObject



158
159
160
161
# File 'lib/solr_wrapper/configuration.rb', line 158

def collection_options
  hash = options.fetch(:collection, {})
  Configuration.slice(hash.transform_keys(&:to_sym), :name, :dir, :persist)
end

#configsetsObject



163
164
165
166
# File 'lib/solr_wrapper/configuration.rb', line 163

def configsets
  configsets = options[:configsets] || []
  configsets.map { |x| x.transform_keys(&:to_sym) }
end

#contribObject



172
173
174
# File 'lib/solr_wrapper/configuration.rb', line 172

def contrib
  options.fetch(:contrib, [])
end

#default_download_dirObject



67
68
69
70
71
72
73
# File 'lib/solr_wrapper/configuration.rb', line 67

def default_download_dir
  if defined?(Rails) && Rails.respond_to?(:root) && Rails.root
    File.join(Rails.root, 'tmp')
  else
    Dir.tmpdir
  end
end

#download_dirObject



63
64
65
# File 'lib/solr_wrapper/configuration.rb', line 63

def download_dir
  options[:download_dir] || default_download_dir
end

#envObject



79
80
81
# File 'lib/solr_wrapper/configuration.rb', line 79

def env
  options.fetch(:env, {})
end

#extra_lib_dirObject



20
21
22
# File 'lib/solr_wrapper/configuration.rb', line 20

def extra_lib_dir
  options[:extra_lib_dir]
end

#ignore_checksumObject



28
29
30
# File 'lib/solr_wrapper/configuration.rb', line 28

def ignore_checksum
  options[:ignore_checksum]
end

#instance_dirObject



83
84
85
# File 'lib/solr_wrapper/configuration.rb', line 83

def instance_dir
  options[:instance_dir]
end

#mirror_artifact_pathObject



103
104
105
106
107
108
109
# File 'lib/solr_wrapper/configuration.rb', line 103

def mirror_artifact_path
  if version > '9'
    "solr/solr/#{version}/solr-#{version}.tgz"
  else
    "lucene/solr/#{version}/solr-#{version}.tgz"
  end
end

#mirror_urlObject



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/solr_wrapper/configuration.rb', line 115

def mirror_url
  @mirror_url ||= if options[:mirror_url]
    options[:mirror_url] + mirror_artifact_path
  else
    begin
      client = Faraday.new(closest_mirror_url) do |faraday|
        faraday.use Faraday::FollowRedirects::Middleware
        faraday.adapter Faraday.default_adapter
      end

      json = client.get.body
      doc = JSON.parse(json)
      url = doc['preferred'] + doc['path_info']

      response = Faraday.head(url)

      if response.success?
        url
      else
        archive_download_url
      end
    rescue Errno::ECONNRESET, SocketError, Faraday::Error
      archive_download_url
    end
  end
end

#poll_intervalObject



168
169
170
# File 'lib/solr_wrapper/configuration.rb', line 168

def poll_interval
  options.fetch(:poll_interval, 1)
end

#portObject



44
45
46
47
48
49
# File 'lib/solr_wrapper/configuration.rb', line 44

def port
  # Check if the port option has been explicitly set to nil.
  # this means to start solr wrapper on a random open port
  return nil if options.key?(:port) && !options[:port]
  options.fetch(:port) { SolrWrapper.default_instance_options[:port] }.to_s
end

#solr_optionsObject



75
76
77
# File 'lib/solr_wrapper/configuration.rb', line 75

def solr_options
  options.fetch(:solr_options, {})
end

#solr_xmlObject



16
17
18
# File 'lib/solr_wrapper/configuration.rb', line 16

def solr_xml
  options[:solr_xml]
end

#urlObject



40
41
42
# File 'lib/solr_wrapper/configuration.rb', line 40

def url
  options[:url]
end

#validateObject



24
25
26
# File 'lib/solr_wrapper/configuration.rb', line 24

def validate
  options[:validate]
end

#verbose?Boolean

Returns:

  • (Boolean)


150
151
152
# File 'lib/solr_wrapper/configuration.rb', line 150

def verbose?
  @verbose || (options && !!options.fetch(:verbose, false))
end

#versionObject



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/solr_wrapper/configuration.rb', line 87

def version
  @version ||= begin
    config_version = if env_options[:version].nil? || env_options[:version].empty?
      options.fetch(:version, SolrWrapper.default_instance_options[:version])
    else
      env_options[:version]
    end

    if config_version == 'latest'
      fetch_latest_version
    else
      config_version
    end
  end
end

#version_fileObject



154
155
156
# File 'lib/solr_wrapper/configuration.rb', line 154

def version_file
  options[:version_file]
end

#zookeeper_hostObject



51
52
53
# File 'lib/solr_wrapper/configuration.rb', line 51

def zookeeper_host
  options[:zookeeper_host]
end

#zookeeper_portObject



55
56
57
# File 'lib/solr_wrapper/configuration.rb', line 55

def zookeeper_port
  options[:zookeeper_port]
end