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_callbackObject

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_callbackObject

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_addressObject

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

#hostnameObject

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_fileObject

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_levelObject

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_hostnameObject

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_pathObject

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_portObject

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

#memoryObject

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_timeoutObject



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

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

#pathObject

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_dirObject



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

#portObject

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

#proxyObject



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

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

#read_timeoutObject



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

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

#schemeObject

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_executableObject

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_homeObject

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_formatObject



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

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

#userinfoObject

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