require "logger"
require "pg_search/scope"

module PgSearch
  class Document < ActiveRecord::Base
    include PgSearch
    self.table_name = 'pg_search_documents'
    belongs_to :searchable, :polymorphic => true

    before_validation :update_content

    # The logger might not have loaded yet.
    # https://github.com/Casecommons/pg_search/issues/26
    def self.logger
      super || Logger.new(STDERR)
    end

    pg_search_scope :search, lambda { |*args|
      options = if PgSearch.multisearch_options.respond_to?(:call)
        PgSearch.multisearch_options.call(*args)
      else
        PgSearch.multisearch_options.reverse_merge(:query => args.first)
      end
      options.reverse_merge(:against => :content)
    }

    private

    def update_content
      methods = Array.wrap(searchable.pg_search_multisearchable_options[:against])
      searchable_text = methods.map { |symbol| searchable.send(symbol) }.join(" ")
      self.content = searchable_text
    end
  end
end

require "logger"

module PgSearch
  class Document < ActiveRecord::Base
    include PgSearch
    self.table_name = 'pg_search_documents'
    belongs_to :searchable, :polymorphic => true

    before_validation :update_content

    # The logger might not have loaded yet.
    # https://github.com/Casecommons/pg_search/issues/26
    def self.logger
      super || Logger.new(STDERR)
    end

    pg_search_scope :search, lambda { |*args|
      options = if PgSearch.multisearch_options.respond_to?(:call)
        PgSearch.multisearch_options.call(*args)
      else
        PgSearch.multisearch_options.reverse_merge(:query => args.first)
      end
      options.reverse_merge(:against => :content)
    }

    private

    def update_content
      methods = Array.wrap(searchable.pg_search_multisearchable_options[:against])
      searchable_text = methods.map { |symbol| searchable.send(symbol) }.join(" ")
      self.content = searchable_text
    end
  end
end

Remove require that is obviated by autoload
Remove require that is obviated by autoload