Class: Sunspot::Rails::Configuration

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

Overview

Sunspot::Rails is configured via the config/sunspot.yml file, which contains properties keyed by environment name. A sample sunspot.yml file would look like:

development:
solr:
  hostname: localhost
  port: 8982
  memory: 1G
  solr_jar: /some/path/solr15/start.jar
  bind_address: 0.0.0.0
  proxy: false
disabled: false
test:
solr:
  hostname: localhost
  port: 8983
  log_level: OFF
  open_timeout: 0.5
  read_timeout: 2
  proxy: false
production:
solr:
  scheme: http
  user: username
  pass: password
  hostname: localhost
  port: 8983
  path: /solr/myindex
  log_level: WARNING
  solr_home: /some/path
  open_timeout: 0.5
  read_timeout: 2
  proxy: http://proxy.com:12345
master_solr:
  hostname: localhost
  port: 8982
  path: /solr
auto_index_callback: after_commit
auto_remove_callback: after_commit
auto_commit_after_request: true

Sunspot::Rails uses the configuration to set up the Solr connection, as well as for starting Solr with the appropriate port using the rake sunspot:solr:start task.

If the master_solr configuration is present, Sunspot will use the Solr instance specified here for all write operations, and the Solr configured under solr for all read operations.

Constant Summary collapse

LOG_LEVELS =

ActiveSupport log levels are integers; this array maps them to the appropriate java.util.logging.Level constant

%w(FINE INFO WARNING SEVERE SEVERE INFO)

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#user_configuration=(value) ⇒ Object

Sets the attribute user_configuration

Parameters:

  • value —

    the value to set the attribute user_configuration to.



62
63
64
# File 'lib/sunspot/rails/configuration.rb', line 62

def user_configuration=(value)
  @user_configuration = value
end

Instance Method Details

#auto_commit_after_delete_request? ⇒ Boolean

As for #auto_commit_after_request? but only for deletes Default false

Returns

Boolean: auto_commit_after_delete_request?

Returns:

  • (Boolean)


235
236
237
238
# File 'lib/sunspot/rails/configuration.rb', line 235

def auto_commit_after_delete_request?
  @auto_commit_after_delete_request ||=
    (user_configuration_from_key('auto_commit_after_delete_request') || false)
end

#auto_commit_after_request? ⇒ Boolean

Should the solr index receive a commit after each http-request. Default true

Returns

Boolean: auto_commit_after_request?

Returns:

  • (Boolean)


222
223
224
225
# File 'lib/sunspot/rails/configuration.rb', line 222

def auto_commit_after_request?
  @auto_commit_after_request ||=
    user_configuration_from_key('auto_commit_after_request') != false
end

#auto_index_callback ⇒ Object

The callback to use when automatically indexing records. Defaults to after_save.



324
325
326
327
# File 'lib/sunspot/rails/configuration.rb', line 324

def auto_index_callback
  @auto_index_callback ||=
    (user_configuration_from_key('auto_index_callback') || 'after_save')
end

#auto_remove_callback ⇒ Object

The callback to use when automatically removing records after deletation. Defaults to after_destroy.



333
334
335
336
# File 'lib/sunspot/rails/configuration.rb', line 333

def auto_remove_callback
  @auto_remove_callback ||=
    (user_configuration_from_key('auto_remove_callback') || 'after_destroy')
end

#bind_address ⇒ Object

Interface on which to run Solr



292
293
294
# File 'lib/sunspot/rails/configuration.rb', line 292

def bind_address
  @bind_address ||= user_configuration_from_key('solr', 'bind_address')
end

#disabled? ⇒ Boolean

Whether or not to disable Solr. Defaults to false.

Returns:

  • (Boolean)


316
317
318
# File 'lib/sunspot/rails/configuration.rb', line 316

def disabled?
  @disabled ||= (user_configuration_from_key('disabled') || false)
end

#has_master? ⇒ Boolean

True if there is a master Solr instance configured, otherwise false.

Returns

Boolean

bool

Returns:

  • (Boolean)


193
194
195
# File 'lib/sunspot/rails/configuration.rb', line 193

def has_master?
  @has_master = !!user_configuration_from_key('master_solr')
end

#hostname ⇒ Object

The host name at which to connect to Solr. Default 'localhost'.

Returns

String

host name



70
71
72
73
74
75
76
77
# File 'lib/sunspot/rails/configuration.rb', line 70

def hostname
  unless defined?(@hostname)
    @hostname   = solr_url.host if solr_url
    @hostname ||= user_configuration_from_key('solr', 'hostname')
    @hostname ||= default_hostname
  end
  @hostname
end

#log_file ⇒ Object

The log directory for solr logfiles

Returns

String

log_dir



248
249
250
# File 'lib/sunspot/rails/configuration.rb', line 248

def log_file
  @log_file ||= (user_configuration_from_key('solr', 'log_file') || default_log_file_location )
end

#log_level ⇒ Object

The default log_level that should be passed to solr. You can change the individual log_levels in the solr admin interface. If no level is specified in the sunspot configuration file, use a level similar to Rails own logging level.

Returns

String

log_level



207
208
209
210
211
212
# File 'lib/sunspot/rails/configuration.rb', line 207

def log_level
  @log_level ||= (
    user_configuration_from_key('solr', 'log_level') ||
    LOG_LEVELS[::Rails.logger.level]
  )
end

#master_hostname ⇒ Object

The host name at which to connect to the master Solr instance. Defaults to the 'hostname' configuration option.

Returns

String

host name



158
159
160
# File 'lib/sunspot/rails/configuration.rb', line 158

def master_hostname
  @master_hostname ||= (user_configuration_from_key('master_solr', 'hostname') || hostname)
end

#master_path ⇒ Object

The path to the master Solr servlet (useful if you are running multicore). Defaults to the value of the 'path' configuration option.

Returns

String

path



182
183
184
# File 'lib/sunspot/rails/configuration.rb', line 182

def master_path
  @master_path ||= (user_configuration_from_key('master_solr', 'path') || path)
end

#master_port ⇒ Object

The port at which to connect to the master Solr instance. Defaults to the 'port' configuration option.

Returns

Integer

port



170
171
172
# File 'lib/sunspot/rails/configuration.rb', line 170

def master_port
  @master_port ||= (user_configuration_from_key('master_solr', 'port') || port).to_i
end

#memory ⇒ Object

java heap size for Solr instance



285
286
287
# File 'lib/sunspot/rails/configuration.rb', line 285

def memory
  @memory ||= user_configuration_from_key('solr', 'memory')
end

#open_timeout ⇒ Object



300
301
302
# File 'lib/sunspot/rails/configuration.rb', line 300

def open_timeout
  @open_timeout ||= user_configuration_from_key('solr', 'open_timeout')
end

#path ⇒ Object

The url path to the Solr servlet (useful if you are running multicore). Default '/solr/default'.

Returns

String

path



141
142
143
144
145
146
147
148
# File 'lib/sunspot/rails/configuration.rb', line 141

def path
  unless defined?(@path)
    @path   = solr_url.path if solr_url
    @path ||= user_configuration_from_key('solr', 'path')
    @path ||= default_path
  end
  @path
end

#pid_dir ⇒ Object



252
253
254
# File 'lib/sunspot/rails/configuration.rb', line 252

def pid_dir
  @pid_dir ||= user_configuration_from_key('solr', 'pid_dir') || File.join(::Rails.root, 'solr', 'pids', ::Rails.env)
end

#port ⇒ Object

The port at which to connect to Solr. Defaults to 8981 in test, 8982 in development and 8983 in production.

Returns

Integer

port



87
88
89
90
91
92
93
94
95
# File 'lib/sunspot/rails/configuration.rb', line 87

def port
  unless defined?(@port)
    @port   = solr_url.port if solr_url
    @port ||= user_configuration_from_key('solr', 'port')
    @port ||= default_port
    @port   = @port.to_i
  end
  @port
end

#proxy ⇒ Object



308
309
310
# File 'lib/sunspot/rails/configuration.rb', line 308

def proxy
  @proxy ||= user_configuration_from_key('solr', 'proxy')
end

#read_timeout ⇒ Object



296
297
298
# File 'lib/sunspot/rails/configuration.rb', line 296

def read_timeout
  @read_timeout ||= user_configuration_from_key('solr', 'read_timeout')
end

#scheme ⇒ Object

The scheme to use, http or https. Defaults to http

Returns

String

scheme



105
106
107
108
109
110
111
112
# File 'lib/sunspot/rails/configuration.rb', line 105

def scheme
  unless defined?(@scheme)
    @scheme   = solr_url.scheme if solr_url
    @scheme ||= user_configuration_from_key('solr', 'scheme')
    @scheme ||= default_scheme
  end
  @scheme
end

#solr_executable ⇒ Object

Solr start jar



278
279
280
# File 'lib/sunspot/rails/configuration.rb', line 278

def solr_executable
  @solr_executable ||= user_configuration_from_key('solr', 'solr_executable')
end

#solr_home ⇒ Object

The solr home directory. Sunspot::Rails expects this directory to contain a config, data and pids directory. See Sunspot::Rails::Server.bootstrap for more information.

Returns

String

solr_home



266
267
268
269
270
271
272
273
# File 'lib/sunspot/rails/configuration.rb', line 266

def solr_home
  @solr_home ||=
    if user_configuration_from_key('solr', 'solr_home')
      user_configuration_from_key('solr', 'solr_home')
    else
      File.join(::Rails.root, 'solr')
    end
end

#update_format ⇒ Object



304
305
306
# File 'lib/sunspot/rails/configuration.rb', line 304

def update_format
  @update_format ||= user_configuration_from_key('solr', 'update_format')
end

#userinfo ⇒ Object

The userinfo used for authentication, a colon-delimited string like "user:pass" Defaults to nil, which means no authentication

Returns

String

userinfo



122
123
124
125
126
127
128
129
130
131
# File 'lib/sunspot/rails/configuration.rb', line 122

def userinfo
  unless defined?(@userinfo)
    @userinfo   = solr_url.userinfo if solr_url
    user = user_configuration_from_key('solr', 'user')
    pass = user_configuration_from_key('solr', 'pass')
    @userinfo ||= [ user, pass ].compact.join(":") if user && pass
    @userinfo ||= default_userinfo
  end
  @userinfo
end