meilisearch-rails 0.2.3 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +25 -17
- data/LICENSE +1 -1
- data/README.md +86 -80
- data/Rakefile +5 -4
- data/lib/meilisearch/rails/configuration.rb +23 -0
- data/lib/meilisearch/rails/errors.rb +14 -0
- data/lib/meilisearch/rails/ms_job.rb +11 -0
- data/lib/meilisearch/rails/pagination/kaminari.rb +48 -0
- data/lib/meilisearch/rails/pagination/will_paginate.rb +22 -0
- data/lib/meilisearch/rails/pagination.rb +20 -0
- data/lib/meilisearch/rails/railtie.rb +14 -0
- data/lib/meilisearch/rails/tasks/meilisearch.rake +22 -0
- data/lib/meilisearch/rails/utilities.rb +46 -0
- data/lib/meilisearch/rails/version.rb +7 -0
- data/lib/meilisearch-rails.rb +674 -671
- data/meilisearch-rails.gemspec +27 -37
- metadata +15 -16
- data/lib/meilisearch/configuration.rb +0 -19
- data/lib/meilisearch/ms_job.rb +0 -9
- data/lib/meilisearch/pagination/kaminari.rb +0 -44
- data/lib/meilisearch/pagination/will_paginate.rb +0 -19
- data/lib/meilisearch/pagination.rb +0 -19
- data/lib/meilisearch/railtie.rb +0 -11
- data/lib/meilisearch/tasks/meilisearch.rake +0 -19
- data/lib/meilisearch/utilities.rb +0 -49
- data/lib/meilisearch/version.rb +0 -3
- data/spec/spec_helper.rb +0 -52
- data/spec/utilities_spec.rb +0 -36
@@ -0,0 +1,22 @@
|
|
1
|
+
begin
|
2
|
+
require 'will_paginate/collection'
|
3
|
+
rescue LoadError
|
4
|
+
raise(MeiliSearch::BadConfiguration,
|
5
|
+
"MeiliSearch: Please add 'will_paginate' to your Gemfile to use will_paginate pagination backend")
|
6
|
+
end
|
7
|
+
|
8
|
+
module MeiliSearch
|
9
|
+
module Rails
|
10
|
+
module Pagination
|
11
|
+
class WillPaginate
|
12
|
+
def self.create(results, total_hits, options = {})
|
13
|
+
::WillPaginate::Collection.create(options[:page], options[:per_page], total_hits) do |pager|
|
14
|
+
start = (options[:page] - 1) * options[:per_page]
|
15
|
+
paginated_results = results[start, options[:per_page]]
|
16
|
+
pager.replace paginated_results
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module MeiliSearch
|
2
|
+
module Rails
|
3
|
+
module Pagination
|
4
|
+
autoload :WillPaginate, 'meilisearch/rails/pagination/will_paginate'
|
5
|
+
autoload :Kaminari, 'meilisearch/rails/pagination/kaminari'
|
6
|
+
|
7
|
+
def self.create(results, total_hits, options = {})
|
8
|
+
return results if MeiliSearch::Rails.configuration[:pagination_backend].nil?
|
9
|
+
|
10
|
+
begin
|
11
|
+
backend = MeiliSearch::Rails.configuration[:pagination_backend].to_s.classify
|
12
|
+
|
13
|
+
::MeiliSearch::Rails::Pagination.const_get(backend).create(results, total_hits, options)
|
14
|
+
rescue NameError
|
15
|
+
raise(BadConfiguration, 'Unknown pagination backend')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
namespace :meilisearch do
|
2
|
+
desc 'Reindex all models'
|
3
|
+
task reindex: :environment do
|
4
|
+
puts 'Reindexing all Meilisearch models'
|
5
|
+
|
6
|
+
MeiliSearch::Rails::Utilities.reindex_all_models
|
7
|
+
end
|
8
|
+
|
9
|
+
desc 'Set settings to all indexes'
|
10
|
+
task set_all_settings: :environment do
|
11
|
+
puts 'Set settings in all Meilisearch models'
|
12
|
+
|
13
|
+
MeiliSearch::Rails::Utilities.set_settings_all_models
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Clear all indexes'
|
17
|
+
task clear_indexes: :environment do
|
18
|
+
puts 'Clearing indexes from all Meilisearch models'
|
19
|
+
|
20
|
+
MeiliSearch::Rails::Utilities.clear_all_indexes
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module MeiliSearch
|
2
|
+
module Rails
|
3
|
+
module Utilities
|
4
|
+
class << self
|
5
|
+
def get_model_classes
|
6
|
+
if ::Rails.application && defined?(::Rails.autoloaders) && ::Rails.autoloaders.zeitwerk_enabled?
|
7
|
+
Zeitwerk::Loader.eager_load_all
|
8
|
+
elsif ::Rails.application
|
9
|
+
::Rails.application.eager_load!
|
10
|
+
end
|
11
|
+
klasses = MeiliSearch::Rails.instance_variable_get(:@included_in)
|
12
|
+
(klasses + klasses.map(&:descendants).flatten).uniq
|
13
|
+
end
|
14
|
+
|
15
|
+
def clear_all_indexes
|
16
|
+
get_model_classes.each(&:clear_index!)
|
17
|
+
end
|
18
|
+
|
19
|
+
def reindex_all_models
|
20
|
+
klasses = get_model_classes
|
21
|
+
|
22
|
+
::Rails.logger.info "\n\nReindexing #{klasses.count} models: #{klasses.to_sentence}.\n"
|
23
|
+
|
24
|
+
klasses.each do |klass|
|
25
|
+
::Rails.logger.info klass
|
26
|
+
::Rails.logger.info "Reindexing #{klass.count} records..."
|
27
|
+
|
28
|
+
klass.ms_reindex!
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def set_settings_all_models
|
33
|
+
klasses = get_model_classes
|
34
|
+
|
35
|
+
::Rails.logger.info "\n\nPushing settings for #{klasses.count} models: #{klasses.to_sentence}.\n"
|
36
|
+
|
37
|
+
klasses.each do |klass|
|
38
|
+
::Rails.logger.info "Pushing #{klass} settings..."
|
39
|
+
|
40
|
+
klass.ms_set_settings
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|