class MeiliSearch::IndexSettings
Constants
- DEFAULT_BATCH_SIZE
- DEFAULT_PRIMARY_KEY
- OPTIONS
MeiliSearch
settings
Public Class Methods
new(options, &block)
click to toggle source
# File lib/meilisearch-rails.rb, line 76 def initialize(options, &block) @options = options instance_exec(&block) if block_given? end
Public Instance Methods
add_attribute(*names, &block)
click to toggle source
# File lib/meilisearch-rails.rb, line 95 def add_attribute(*names, &block) raise ArgumentError.new('Cannot pass multiple attribute names if block given') if block_given? and names.length > 1 @additional_attributes ||= {} names.each do |name| @additional_attributes[name.to_s] = block_given? ? Proc.new { |d| d.instance_eval(&block) } : Proc.new { |d| d.send(name) } end end
Also aliased as: add_attributes
add_index(index_uid, options = {}, &block)
click to toggle source
# File lib/meilisearch-rails.rb, line 220 def add_index(index_uid, options = {}, &block) raise ArgumentError.new('No block given') if !block_given? raise ArgumentError.new('Options auto_index and auto_remove cannot be set on nested indexes') if options[:auto_index] || options[:auto_remove] @additional_indexes ||= {} options[:index_uid] = index_uid @additional_indexes[options] = IndexSettings.new(options, &block) end
additional_indexes()
click to toggle source
# File lib/meilisearch-rails.rb, line 228 def additional_indexes @additional_indexes || {} end
attribute(*names, &block)
click to toggle source
# File lib/meilisearch-rails.rb, line 86 def attribute(*names, &block) raise ArgumentError.new('Cannot pass multiple attribute names if block given') if block_given? and names.length > 1 @attributes ||= {} names.flatten.each do |name| @attributes[name.to_s] = block_given? ? Proc.new { |d| d.instance_eval(&block) } : Proc.new { |d| d.send(name) } end end
Also aliased as: attributes
attributes_to_hash(attributes, document)
click to toggle source
# File lib/meilisearch-rails.rb, line 133 def attributes_to_hash(attributes, document) if attributes Hash[attributes.map { |name, value| [name.to_s, value.call(document) ] }] else {} end end
encode_attributes(v)
click to toggle source
# File lib/meilisearch-rails.rb, line 194 def encode_attributes(v) case v when String v.force_encoding('utf-8') when Hash v.each { |key, value| v[key] = encode_attributes(value) } when Array v.map { |x| encode_attributes(x) } else v end end
get_attribute_names(document)
click to toggle source
# File lib/meilisearch-rails.rb, line 129 def get_attribute_names(document) get_attributes(document).keys end
get_attributes(document)
click to toggle source
# File lib/meilisearch-rails.rb, line 141 def get_attributes(document) # If a serializer is set, we ignore attributes # everything should be done via the serializer if not @serializer.nil? attributes = @serializer.new(document).attributes else if @attributes.nil? || @attributes.length == 0 # no `attribute ...` have been configured, use the default attributes of the model attributes = get_default_attributes(document) else # at least 1 `attribute ...` has been configured, therefore use ONLY the one configured if is_active_record?(document) document.class.unscoped do attributes = attributes_to_hash(@attributes, document) end else attributes = attributes_to_hash(@attributes, document) end end end attributes.merge!(attributes_to_hash(@additional_attributes, document)) if @additional_attributes if @options[:sanitize] sanitizer = begin ::HTML::FullSanitizer.new rescue NameError # from rails 4.2 ::Rails::Html::FullSanitizer.new end attributes = sanitize_attributes(attributes, sanitizer) end if @options[:force_utf8_encoding] attributes = encode_attributes(attributes) end attributes end
get_default_attributes(document)
click to toggle source
# File lib/meilisearch-rails.rb, line 116 def get_default_attributes(document) if is_mongoid?(document) # work-around mongoid 2.4's unscoped method, not accepting a block document.attributes elsif is_sequel?(document) document.to_hash else document.class.unscoped do document.attributes end end end
get_setting(name)
click to toggle source
# File lib/meilisearch-rails.rb, line 207 def get_setting(name) instance_variable_get("@#{name}") end
is_active_record?(document)
click to toggle source
# File lib/meilisearch-rails.rb, line 112 def is_active_record?(document) !is_mongoid?(document) && !is_sequel?(document) end
is_mongoid?(document)
click to toggle source
# File lib/meilisearch-rails.rb, line 104 def is_mongoid?(document) defined?(::Mongoid::Document) && document.class.include?(::Mongoid::Document) end
is_sequel?(document)
click to toggle source
# File lib/meilisearch-rails.rb, line 108 def is_sequel?(document) defined?(::Sequel) && document.class < ::Sequel::Model end
sanitize_attributes(v, sanitizer)
click to toggle source
# File lib/meilisearch-rails.rb, line 181 def sanitize_attributes(v, sanitizer) case v when String sanitizer.sanitize(v) when Hash v.each { |key, value| v[key] = sanitize_attributes(value, sanitizer) } when Array v.map { |x| sanitize_attributes(x, sanitizer) } else v end end
to_settings()
click to toggle source
# File lib/meilisearch-rails.rb, line 211 def to_settings settings = {} OPTIONS.each do |k| v = get_setting(k) settings[k] = v if !v.nil? end settings end
use_serializer(serializer)
click to toggle source
# File lib/meilisearch-rails.rb, line 81 def use_serializer(serializer) @serializer = serializer # instance_variable_set("@serializer", serializer) end