Class: PgSearch::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/pg_search/configuration.rb,
lib/pg_search/configuration/column.rb,
lib/pg_search/configuration/association.rb

Defined Under Namespace

Classes: Association, Column

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options, model) ⇒ Configuration

Returns a new instance of Configuration.



6
7
8
9
10
11
# File 'lib/pg_search/configuration.rb', line 6

def initialize(options, model)
  options = options.reverse_merge(default_options)
  assert_valid_options(options)
  @options = options
  @model = model
end

Class Method Details

.alias(*strings) ⇒ Object



14
15
16
17
18
# File 'lib/pg_search/configuration.rb', line 14

def alias(*strings)
  name = Array.wrap(strings).compact.join("_")
  # By default, PostgreSQL limits names to 32 characters, so we hash and limit to 32 characters.
  "pg_search_#{Digest::SHA2.hexdigest(name)}"[0,32]
end

Instance Method Details

#associated_columnsObject



40
41
42
# File 'lib/pg_search/configuration.rb', line 40

def associated_columns
  associations.map(&:columns).flatten
end

#associationsObject



32
33
34
35
36
37
38
# File 'lib/pg_search/configuration.rb', line 32

def associations
  return [] unless @options[:associated_against]
  @options[:associated_against].map do |association, column_names|
    association = Association.new(@model, association, column_names)
    association
  end.flatten
end

#columnsObject



21
22
23
# File 'lib/pg_search/configuration.rb', line 21

def columns
  regular_columns + associated_columns
end

#featuresObject



56
57
58
# File 'lib/pg_search/configuration.rb', line 56

def features
  Array(@options[:using])
end

#ignoreObject



48
49
50
# File 'lib/pg_search/configuration.rb', line 48

def ignore
  Array.wrap(@options[:ignoring])
end

#loggerObject



68
69
70
# File 'lib/pg_search/configuration.rb', line 68

def logger
  @model.logger
end

#order_within_rankObject



60
61
62
# File 'lib/pg_search/configuration.rb', line 60

def order_within_rank
  @options[:order_within_rank]
end

#postgresql_versionObject



64
65
66
# File 'lib/pg_search/configuration.rb', line 64

def postgresql_version
  @model.connection.send(:postgresql_version)
end

#queryObject



44
45
46
# File 'lib/pg_search/configuration.rb', line 44

def query
  @options[:query].to_s
end

#ranking_sqlObject



52
53
54
# File 'lib/pg_search/configuration.rb', line 52

def ranking_sql
  @options[:ranked_by]
end

#regular_columnsObject



25
26
27
28
29
30
# File 'lib/pg_search/configuration.rb', line 25

def regular_columns
  return [] unless @options[:against]
  Array(@options[:against]).map do |column_name, weight|
    Column.new(column_name, weight, @model)
  end
end