Module: MeiliSearch::Rails::Utilities

Defined in:
lib/meilisearch/rails/utilities.rb

Class Method Summary collapse

Class Method Details

.clear_all_indexesObject



15
16
17
# File 'lib/meilisearch/rails/utilities.rb', line 15

def clear_all_indexes
  get_model_classes.each(&:clear_index!)
end

.get_model_classesObject



5
6
7
8
9
10
11
12
13
# File 'lib/meilisearch/rails/utilities.rb', line 5

def get_model_classes
  if ::Rails.application && defined?(::Rails.autoloaders) && ::Rails.autoloaders.zeitwerk_enabled?
    Zeitwerk::Loader.eager_load_all
  elsif ::Rails.application
    ::Rails.application.eager_load!
  end
  klasses = MeiliSearch::Rails.instance_variable_get(:@included_in)
  (klasses + klasses.map(&:descendants).flatten).uniq
end

.indexable?(record, options) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
47
48
49
# File 'lib/meilisearch/rails/utilities.rb', line 44

def indexable?(record, options)
  return false unless options[:if].blank? || constraint_passes?(record, options[:if])
  return false unless options[:unless].blank? || !constraint_passes?(record, options[:unless])

  true
end

.mongo_model?(model_class) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/meilisearch/rails/utilities.rb', line 51

def mongo_model?(model_class)
  defined?(::Mongoid::Document) && model_class.include?(::Mongoid::Document)
end

.reindex_all_modelsObject



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/meilisearch/rails/utilities.rb', line 19

def reindex_all_models
  klasses = get_model_classes

  ::Rails.logger.info "\n\nReindexing #{klasses.count} models: #{klasses.to_sentence}.\n"

  klasses.each do |klass|
    ::Rails.logger.info klass
    ::Rails.logger.info "Reindexing #{klass.count} records..."

    klass.ms_reindex!
  end
end

.sequel_model?(model_class) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/meilisearch/rails/utilities.rb', line 55

def sequel_model?(model_class)
  defined?(::Sequel::Model) && model_class < Sequel::Model
end

.set_settings_all_modelsObject



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/meilisearch/rails/utilities.rb', line 32

def set_settings_all_models
  klasses = get_model_classes

  ::Rails.logger.info "\n\nPushing settings for #{klasses.count} models: #{klasses.to_sentence}.\n"

  klasses.each do |klass|
    ::Rails.logger.info "Pushing #{klass} settings..."

    klass.ms_set_settings
  end
end