meilisearch-rails 0.2.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|