Sha256: 455b9e6005d67d503b10e2edc518f3132699014437736cd7bf62bc0046c54271

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module AboutPage
  class Solr  < AboutPage::Configuration::Node
    delegate :each_pair, :to_json, :to_xml, :to => :to_h

    attr_accessor :rsolr, :options

    def initialize rsolr_instance, options = {}
      self.rsolr = rsolr_instance
      self.options = options

      self.options[:minimum_numdocs] ||= 1
    end

    def schema
      @schema ||= rsolr.luke(:show => 'schema', :numTerms => 0)
    rescue
      {}
    end

    def index
      schema['index'] || {}
    end
    alias_method :to_h, :index

    def ok?
      return false if schema.empty?
      return false if index[:numDocs].to_i < minimum_numdocs

      true
    end

    def messages
      a = []
      a << "Unable to connect to solr: #{self.rsolr.inspect}" if schema.empty?
      a << "Solr numDocs (#{index[:numDocs]}) is less than the minimum #{minimum_numdocs}" if !schema.empty? and index[:numDocs].to_i < minimum_numdocs

      a
    end

    def preflight request
      @schema = nil
      @minimum_numdocs = request.params['solr.numDocs'].to_i if request.params['solr.numDocs'].to_i
    end

    def minimum_numdocs
      @minimum_numdocs || self.options[:minimum_numdocs]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
about_page-0.0.2 lib/about_page/solr.rb