module Searchkick

Constants

VERSION

Attributes

client[W]
env[W]
models[RW]
search_method_name[RW]
search_timeout[W]
timeout[RW]
wordnet_path[RW]

Public Class Methods

callbacks(value) { || ... } click to toggle source
# File lib/searchkick.rb, line 77
def self.callbacks(value)
  if block_given?
    previous_value = callbacks_value
    begin
      self.callbacks_value = value
      yield
      perform_bulk if callbacks_value == :bulk
    ensure
      self.callbacks_value = previous_value
    end
  else
    self.callbacks_value = value
  end
end
callbacks?() click to toggle source
# File lib/searchkick.rb, line 73
def self.callbacks?
  Thread.current[:searchkick_callbacks_enabled].nil? || Thread.current[:searchkick_callbacks_enabled]
end
callbacks_value() click to toggle source

private

# File lib/searchkick.rb, line 127
def self.callbacks_value
  Thread.current[:searchkick_callbacks_enabled]
end
callbacks_value=(value) click to toggle source

private

# File lib/searchkick.rb, line 132
def self.callbacks_value=(value)
  Thread.current[:searchkick_callbacks_enabled] = value
end
clear_queued_items() click to toggle source

private

# File lib/searchkick.rb, line 122
def self.clear_queued_items
  Thread.current[:searchkick_queued_items] = []
end
client() click to toggle source
# File lib/searchkick.rb, line 39
def self.client
  @client ||=
    Elasticsearch::Client.new(
      url: ENV["ELASTICSEARCH_URL"],
      transport_options: {request: {timeout: timeout}}
    ) do |f|
      f.use Searchkick::Middleware
    end
end
disable_callbacks() click to toggle source
# File lib/searchkick.rb, line 69
def self.disable_callbacks
  self.callbacks_value = false
end
enable_callbacks() click to toggle source
# File lib/searchkick.rb, line 65
def self.enable_callbacks
  self.callbacks_value = nil
end
env() click to toggle source
# File lib/searchkick.rb, line 49
def self.env
  @env ||= ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
end
perform_bulk() click to toggle source

private

# File lib/searchkick.rb, line 99
def self.perform_bulk
  items = queued_items
  clear_queued_items
  perform_items(items)
end
perform_items(items) click to toggle source

private

# File lib/searchkick.rb, line 106
def self.perform_items(items)
  if items.any?
    response = client.bulk(body: items)
    if response["errors"]
      first_item = response["items"].first
      raise Searchkick::ImportError, (first_item["index"] || first_item["delete"])["error"]
    end
  end
end
queue_items(items) click to toggle source

private

# File lib/searchkick.rb, line 93
def self.queue_items(items)
  queued_items.concat(items)
  perform_bulk unless callbacks_value == :bulk
end
queued_items() click to toggle source

private

# File lib/searchkick.rb, line 117
def self.queued_items
  Thread.current[:searchkick_queued_items] ||= []
end
search_timeout() click to toggle source
# File lib/searchkick.rb, line 53
def self.search_timeout
  @search_timeout || timeout
end
server_below?(version) click to toggle source
# File lib/searchkick.rb, line 61
def self.server_below?(version)
  Gem::Version.new(server_version.sub("-", ".")) < Gem::Version.new(version.sub("-", "."))
end
server_version() click to toggle source
# File lib/searchkick.rb, line 57
def self.server_version
  @server_version ||= client.info["version"]["number"]
end