meilisearch-rails 0.4.1 → 0.5.2

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,21 @@
1
- require File.join(File.dirname(__FILE__), 'lib', 'meilisearch', 'version')
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
2
3
 
3
- require 'date'
4
+ require 'meilisearch/rails/version'
4
5
 
5
6
  Gem::Specification.new do |s|
6
7
  s.name = 'meilisearch-rails'
7
- s.version = MeiliSearch::VERSION
8
+ s.version = MeiliSearch::Rails::VERSION
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'
12
11
  s.email = 'bonjour@meilisearch.com'
13
- s.homepage = 'http://github.com/meilisearch/meilisearch-rails'
14
- s.licenses = ['MIT']
12
+
13
+ s.description = 'Meilisearch integration for Ruby on Rails. See https://github.com/meilisearch/meilisearch'
14
+ s.homepage = 'https://github.com/meilisearch/meilisearch-rails'
15
+ s.summary = 'Meilisearch integration for Ruby on Rails.'
16
+ s.licenses = 'MIT'
17
+
15
18
  s.require_paths = ['lib']
16
- s.summary = 'MeiliSearch integration for Ruby on Rails.'
17
19
 
18
20
  s.extra_rdoc_files = [
19
21
  'LICENSE',
@@ -31,6 +33,6 @@ Gem::Specification.new do |s|
31
33
  ]
32
34
 
33
35
  s.required_ruby_version = '>= 2.6.0'
34
- s.add_dependency('json', ['>= 1.5.1'])
35
- s.add_dependency('meilisearch', ['>= 0.15.4'])
36
+
37
+ s.add_dependency 'meilisearch', '~> 0.18'
36
38
  end
metadata CHANGED
@@ -1,44 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meilisearch-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Meili
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-25 00:00:00.000000000 Z
11
+ date: 2022-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.5.1
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 1.5.1
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: meilisearch
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - ">="
17
+ - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: 0.15.4
19
+ version: '0.18'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - ">="
24
+ - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: 0.15.4
41
- description: MeiliSearch integration for Ruby on Rails. See https://github.com/meilisearch/MeiliSearch
26
+ version: '0.18'
27
+ description: Meilisearch integration for Ruby on Rails. See https://github.com/meilisearch/meilisearch
42
28
  email: bonjour@meilisearch.com
43
29
  executables: []
44
30
  extensions: []
@@ -52,18 +38,18 @@ files:
52
38
  - README.md
53
39
  - Rakefile
54
40
  - 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
41
+ - lib/meilisearch/rails/configuration.rb
42
+ - lib/meilisearch/rails/errors.rb
43
+ - lib/meilisearch/rails/ms_job.rb
44
+ - lib/meilisearch/rails/pagination.rb
45
+ - lib/meilisearch/rails/pagination/kaminari.rb
46
+ - lib/meilisearch/rails/pagination/will_paginate.rb
47
+ - lib/meilisearch/rails/railtie.rb
48
+ - lib/meilisearch/rails/tasks/meilisearch.rake
49
+ - lib/meilisearch/rails/utilities.rb
50
+ - lib/meilisearch/rails/version.rb
65
51
  - meilisearch-rails.gemspec
66
- homepage: http://github.com/meilisearch/meilisearch-rails
52
+ homepage: https://github.com/meilisearch/meilisearch-rails
67
53
  licenses:
68
54
  - MIT
69
55
  metadata: {}
@@ -85,5 +71,5 @@ requirements: []
85
71
  rubygems_version: 3.0.3.1
86
72
  signing_key:
87
73
  specification_version: 4
88
- summary: MeiliSearch integration for Ruby on Rails.
74
+ summary: Meilisearch integration for Ruby on Rails.
89
75
  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