meilisearch-rails 0.3.0 → 0.5.1

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.
@@ -1,19 +1,19 @@
1
- require File.join(File.dirname(__FILE__), 'lib', 'meilisearch', 'version')
1
+ require File.join(File.dirname(__FILE__), 'lib', 'meilisearch', 'rails', 'version')
2
2
 
3
3
  require 'date'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'meilisearch-rails'
7
- s.version = MeiliSearch::VERSION
7
+ s.version = MeiliSearch::Rails::VERSION
8
8
 
9
9
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
10
10
  s.authors = ['Meili']
11
- s.description = 'MeiliSearch integration for Ruby on Rails. See https://github.com/meilisearch/MeiliSearch'
11
+ s.description = 'Meilisearch integration for Ruby on Rails. See https://github.com/meilisearch/meilisearch'
12
12
  s.email = 'bonjour@meilisearch.com'
13
13
  s.homepage = 'http://github.com/meilisearch/meilisearch-rails'
14
14
  s.licenses = ['MIT']
15
15
  s.require_paths = ['lib']
16
- s.summary = 'MeiliSearch integration for Ruby on Rails.'
16
+ s.summary = 'Meilisearch integration for Ruby on Rails.'
17
17
 
18
18
  s.extra_rdoc_files = [
19
19
  'LICENSE',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meilisearch-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Meili
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-18 00:00:00.000000000 Z
11
+ date: 2022-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -38,7 +38,7 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.15.4
41
- description: MeiliSearch integration for Ruby on Rails. See https://github.com/meilisearch/MeiliSearch
41
+ description: Meilisearch integration for Ruby on Rails. See https://github.com/meilisearch/meilisearch
42
42
  email: bonjour@meilisearch.com
43
43
  executables: []
44
44
  extensions: []
@@ -52,16 +52,16 @@ files:
52
52
  - README.md
53
53
  - Rakefile
54
54
  - lib/meilisearch-rails.rb
55
- - lib/meilisearch/configuration.rb
56
- - lib/meilisearch/errors.rb
57
- - lib/meilisearch/ms_job.rb
58
- - lib/meilisearch/pagination.rb
59
- - lib/meilisearch/pagination/kaminari.rb
60
- - lib/meilisearch/pagination/will_paginate.rb
61
- - lib/meilisearch/railtie.rb
62
- - lib/meilisearch/tasks/meilisearch.rake
63
- - lib/meilisearch/utilities.rb
64
- - lib/meilisearch/version.rb
55
+ - lib/meilisearch/rails/configuration.rb
56
+ - lib/meilisearch/rails/errors.rb
57
+ - lib/meilisearch/rails/ms_job.rb
58
+ - lib/meilisearch/rails/pagination.rb
59
+ - lib/meilisearch/rails/pagination/kaminari.rb
60
+ - lib/meilisearch/rails/pagination/will_paginate.rb
61
+ - lib/meilisearch/rails/railtie.rb
62
+ - lib/meilisearch/rails/tasks/meilisearch.rake
63
+ - lib/meilisearch/rails/utilities.rb
64
+ - lib/meilisearch/rails/version.rb
65
65
  - meilisearch-rails.gemspec
66
66
  homepage: http://github.com/meilisearch/meilisearch-rails
67
67
  licenses:
@@ -85,5 +85,5 @@ requirements: []
85
85
  rubygems_version: 3.0.3.1
86
86
  signing_key:
87
87
  specification_version: 4
88
- summary: MeiliSearch integration for Ruby on Rails.
88
+ summary: Meilisearch integration for Ruby on Rails.
89
89
  test_files: []
@@ -1,21 +0,0 @@
1
- module MeiliSearch
2
- module Configuration
3
- def configuration
4
- raise NotConfigured if @_config.blank?
5
-
6
- @_config
7
- end
8
-
9
- def configuration=(configuration)
10
- @_config = configuration
11
- end
12
-
13
- def client
14
- ::MeiliSearch::Client.new(
15
- configuration[:meilisearch_host] || 'http://localhost:7700',
16
- configuration[:meilisearch_api_key],
17
- configuration.slice(:timeout, :max_retries)
18
- )
19
- end
20
- end
21
- end
@@ -1,12 +0,0 @@
1
- module MeiliSearch
2
- class NoBlockGiven < StandardError; end
3
-
4
- class BadConfiguration < StandardError; end
5
-
6
- class NotConfigured < StandardError
7
- def message
8
- 'Please configure MeiliSearch. Set MeiliSearch.configuration = ' \
9
- "{meilisearch_host: 'YOUR_MEILISEARCH_HOST', meilisearch_api_key: 'YOUR_API_KEY'}"
10
- end
11
- end
12
- end
@@ -1,9 +0,0 @@
1
- module MeiliSearch
2
- class MSJob < ::ActiveJob::Base
3
- queue_as :meilisearch
4
-
5
- def perform(record, method)
6
- record.send(method)
7
- end
8
- end
9
- end
@@ -1,46 +0,0 @@
1
- unless defined? Kaminari
2
- raise(MeiliSearch::BadConfiguration,
3
- "MeiliSearch: Please add 'kaminari' to your Gemfile to use kaminari pagination backend")
4
- end
5
-
6
- require 'kaminari/models/array_extension'
7
-
8
- module MeiliSearch
9
- module Pagination
10
- class Kaminari < ::Kaminari::PaginatableArray
11
- def initialize(array, options)
12
- if RUBY_VERSION >= '3'
13
- super(array, **options)
14
- else
15
- super(array, options)
16
- end
17
- end
18
-
19
- def limit(_num)
20
- # noop
21
- self
22
- end
23
-
24
- def offset(_num)
25
- # noop
26
- self
27
- end
28
-
29
- class << self
30
- def create(results, total_hits, options = {})
31
- offset = ((options[:page] - 1) * options[:per_page])
32
- array = new results, limit: options[:per_page], offset: offset, total_count: total_hits
33
-
34
- if array.empty? && !results.empty?
35
- # since Kaminari 0.16.0, you need to pad the results with nil values so it matches the offset param
36
- # otherwise you'll get an empty array: https://github.com/amatsuda/kaminari/commit/29fdcfa8865f2021f710adaedb41b7a7b081e34d
37
- results = ([nil] * offset) + results
38
- array = new results, offset: offset, limit: options[:per_page], total_count: total_hits
39
- end
40
-
41
- array
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,20 +0,0 @@
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 Pagination
10
- class WillPaginate
11
- def self.create(results, total_hits, options = {})
12
- ::WillPaginate::Collection.create(options[:page], options[:per_page], total_hits) do |pager|
13
- start = (options[:page] - 1) * options[:per_page]
14
- paginated_results = results[start, options[:per_page]]
15
- pager.replace paginated_results
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,18 +0,0 @@
1
- module MeiliSearch
2
- module Pagination
3
- autoload :WillPaginate, 'meilisearch/pagination/will_paginate'
4
- autoload :Kaminari, 'meilisearch/pagination/kaminari'
5
-
6
- def self.create(results, total_hits, options = {})
7
- return results if MeiliSearch.configuration[:pagination_backend].nil?
8
-
9
- begin
10
- backend = MeiliSearch.configuration[:pagination_backend].to_s.classify
11
-
12
- ::MeiliSearch::Pagination.const_get(backend).create(results, total_hits, options)
13
- rescue NameError
14
- raise(BadConfiguration, 'Unknown pagination backend')
15
- end
16
- end
17
- end
18
- end
@@ -1,12 +0,0 @@
1
- require 'rails'
2
-
3
- module MeiliSearch
4
- class Railtie < Rails::Railtie
5
- rake_tasks do
6
- load 'meilisearch/tasks/meilisearch.rake'
7
- end
8
- end
9
-
10
- class Engine < Rails::Engine
11
- end
12
- end
@@ -1,17 +0,0 @@
1
- namespace :meilisearch do
2
- desc 'Reindex all models'
3
- task reindex: :environment do
4
- MeiliSearch::Utilities.reindex_all_models
5
- end
6
-
7
- desc 'Set settings to all indexes'
8
- task set_all_settings: :environment do
9
- MeiliSearch::Utilities.set_settings_all_models
10
- end
11
-
12
- desc 'Clear all indexes'
13
- task clear_indexes: :environment do
14
- puts 'clearing all indexes'
15
- MeiliSearch::Utilities.clear_all_indexes
16
- end
17
- end
@@ -1,44 +0,0 @@
1
- module MeiliSearch
2
- module Utilities
3
- class << self
4
- def get_model_classes
5
- if Rails.application && defined?(Rails.autoloaders) && Rails.autoloaders.zeitwerk_enabled?
6
- Zeitwerk::Loader.eager_load_all
7
- elsif Rails.application
8
- Rails.application.eager_load!
9
- end
10
- klasses = MeiliSearch.instance_variable_get(:@included_in)
11
- (klasses + klasses.map(&:descendants).flatten).uniq
12
- end
13
-
14
- def clear_all_indexes
15
- get_model_classes.each(&:clear_index!)
16
- end
17
-
18
- def reindex_all_models
19
- klasses = get_model_classes
20
-
21
- Rails.logger.info "\n\nReindexing #{klasses.count} models: #{klasses.to_sentence}.\n"
22
-
23
- klasses.each do |klass|
24
- Rails.logger.info klass
25
- Rails.logger.info "Reindexing #{klass.count} records..."
26
-
27
- klass.ms_reindex!
28
- end
29
- end
30
-
31
- def set_settings_all_models
32
- klasses = get_model_classes
33
-
34
- Rails.logger.info "\n\nPushing settings for #{klasses.count} models: #{klasses.to_sentence}.\n"
35
-
36
- klasses.each do |klass|
37
- Rails.logger.info "Pushing #{klass} settings..."
38
-
39
- klass.ms_set_settings
40
- end
41
- end
42
- end
43
- end
44
- end