class Locomotive::Search::BackendFactory

Attributes

klass[R]

Public Class Methods

new(name_or_klass) click to toggle source
# File lib/locomotive/search/backend_factory.rb, line 8
def initialize(name_or_klass)
  if name_or_klass.is_a?(Symbol) || name_or_klass.is_a?(String)
    begin
      require_relative "./backend/#{name_or_klass}"
      @klass = "Locomotive::Search::Backend::#{name_or_klass.to_s.camelize}".constantize
    rescue LoadError
      raise UnknownBackendError.new("'#{name_or_klass}' is not a valid backend")
    end
  else
    @klass = name_or_klass
  end
end

Public Instance Methods

create(site, locale) click to toggle source
# File lib/locomotive/search/backend_factory.rb, line 21
def create(site, locale)
  return nil unless self.setup?

  backend = self.klass.new(site, locale)
  backend.valid? ? backend : nil
end
enabled_for?(site) click to toggle source
# File lib/locomotive/search/backend_factory.rb, line 38
def enabled_for?(site)
  self.setup? && self.klass.enabled_for?(site)
end
name() click to toggle source
# File lib/locomotive/search/backend_factory.rb, line 28
def name
  return nil unless self.setup?

  self.klass.name.demodulize.underscore
end
reset_done!(site) click to toggle source
# File lib/locomotive/search/backend_factory.rb, line 46
def reset_done!(site)
  self.setup? && self.klass.reset_done!(site)
end
reset_for?(site) click to toggle source
# File lib/locomotive/search/backend_factory.rb, line 42
def reset_for?(site)
  self.setup? && self.klass.reset_for?(site)
end
setup?() click to toggle source
# File lib/locomotive/search/backend_factory.rb, line 34
def setup?
  self.klass.present?
end