meilisearch-rails 0.10.0 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e6cae00e4ee6cf99a4a37dc952878f7daf7a7a20430e5fd46a79c3a67c0fc449
4
- data.tar.gz: 5a7ac80cc7e7efec587c50130512b689da1d9ff79f9fed659a938c7d9e271da1
3
+ metadata.gz: cb990c26e799658b655df059ea7a22b4cfc7511a88e7581d72c27841b736f74f
4
+ data.tar.gz: c2457a258356732877729a9f110a8f392316a98d725d6d052f2dc64824a3ea2f
5
5
  SHA512:
6
- metadata.gz: 52e7e1d510abc2c5b60d53c017ab2daf966134f5978181d7f02020d94a35e6ea5211956de69b156eaa71ff42e0ddbea58f1bf22d63c56a8cbc917dd93966ad15
7
- data.tar.gz: 7e900cf552380b547f9f3a7d451f4a9f94631c48fc56a2269eead4104263b33807ffeca035bb8ca468cad4c516df5f8e8faf7de269a6321f7f8a049f7c0a0f6a
6
+ metadata.gz: 7499509091a149069f1322e3ceec9c789432c3495d8c2754d258bb17c5cc1d70a410ebcd41e1eb76bcbe50b3c9e301044d0a5e6931e94bdd8779eb290e9eaecf
7
+ data.tar.gz: 68173b7d7767308144b6987c35c9c2fb75806959a6fcdc3ee3545cab88779d24e013dea0ea0b3b0a3182f8fb9bcd5c7e1634aaf89ecd39f4cb7ad21231b95a0b
data/README.md CHANGED
@@ -29,7 +29,7 @@
29
29
 
30
30
  **Meilisearch** is an open-source search engine. [Learn more about Meilisearch.](https://github.com/meilisearch/meilisearch)
31
31
 
32
- ## Table of Contents <!-- omit in toc -->
32
+ ## Table of Contents <!-- omit in TOC -->
33
33
 
34
34
  - [📖 Documentation](#-documentation)
35
35
  - [⚡ Supercharge your Meilisearch experience](#-supercharge-your-meilisearch-experience)
@@ -110,11 +110,17 @@ Create a new file `config/initializers/meilisearch.rb` to setup your `MEILISEARC
110
110
 
111
111
  ```ruby
112
112
  MeiliSearch::Rails.configuration = {
113
- meilisearch_url: 'YourMeilisearchUrl', # example: http://localhost:7700
114
- meilisearch_api_key: 'YourMeilisearchAPIKey',
113
+ meilisearch_url: ENV.fetch('MEILISEARCH_HOST', 'http://localhost:7700'),
114
+ meilisearch_api_key: ENV.fetch('MEILISEARCH_API_KEY', 'YourMeilisearchAPIKey')
115
115
  }
116
116
  ```
117
117
 
118
+ Or you can run a rake task to create the initializer file for you:
119
+
120
+ ```bash
121
+ bin/rails meilisearch:install
122
+ ```
123
+
118
124
  The gem is compatible with [ActiveRecord](https://github.com/rails/rails/tree/master/activerecord), [Mongoid](https://github.com/mongoid/mongoid) and [Sequel](https://github.com/jeremyevans/sequel).
119
125
 
120
126
  ⚠️ Note that even if you want to use all the default options, you must declare an empty `meilisearch` block in your model.
@@ -323,7 +329,7 @@ Check [`ddnexus/pagy`](https://ddnexus.github.io/pagy/extras/meilisearch) for mo
323
329
 
324
330
  #### Deactivate Meilisearch in certain moments
325
331
 
326
- By default HTTP connections to the Meilisearch URL is always active, but sometimes you want to disable the HTTP requests in a particular moment or environment.<br>
332
+ By default, HTTP connections to the Meilisearch URL are always active, but sometimes you want to disable the HTTP requests in a particular moment or environment.<br>
327
333
  you have multiple ways to achieve this.
328
334
 
329
335
  By adding `active: false` in the configuration initializer:
@@ -17,7 +17,7 @@ module MeiliSearch
17
17
  end
18
18
 
19
19
  def self.log_pagy_error
20
- (::Rails.logger || Logger.new($stdout))
20
+ MeiliSearch::Rails.logger
21
21
  .warning('[meilisearch-rails] Remove `pagination_backend: :pagy` from your initializer, `pagy` it is not required for `pagy`')
22
22
  end
23
23
 
@@ -19,4 +19,11 @@ namespace :meilisearch do
19
19
 
20
20
  MeiliSearch::Rails::Utilities.clear_all_indexes
21
21
  end
22
+
23
+ desc 'Create initializer file'
24
+ task install: :environment do
25
+ puts 'Creating initializer file'
26
+
27
+ copy_file "#{__dir__}/../templates/initializer.rb", 'config/initializers/meilisearch.rb'
28
+ end
22
29
  end
@@ -0,0 +1,4 @@
1
+ MeiliSearch::Rails.configuration = {
2
+ meilisearch_url: ENV.fetch('MEILISEARCH_HOST', 'http://localhost:7700'),
3
+ meilisearch_api_key: ENV.fetch('MEILISEARCH_API_KEY', 'YourMeilisearchAPIKey')
4
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  module MeiliSearch
4
4
  module Rails
5
- VERSION = '0.10.0'
5
+ VERSION = '0.10.2'
6
6
 
7
7
  def self.qualified_version
8
8
  "Meilisearch Rails (v#{VERSION})"
@@ -39,6 +39,10 @@ module MeiliSearch
39
39
  include InstanceMethods
40
40
  end
41
41
  end
42
+
43
+ def logger
44
+ @logger ||= (::Rails.logger || Logger.new($stdout))
45
+ end
42
46
  end
43
47
 
44
48
  class IndexSettings
@@ -48,23 +52,23 @@ module MeiliSearch
48
52
 
49
53
  # Meilisearch settings
50
54
  OPTIONS = %i[
51
- searchableAttributes
52
- filterableAttributes
53
- sortableAttributes
54
- displayedAttributes
55
- distinctAttribute
55
+ searchable_attributes
56
+ filterable_attributes
57
+ sortable_attributes
58
+ displayed_attributes
59
+ distinct_attribute
56
60
  synonyms
57
- stopWords
58
- rankingRules
59
- attributesToHighlight
60
- attributesToCrop
61
- cropLength
61
+ stop_words
62
+ ranking_rules
63
+ attributes_to_highlight
64
+ attributes_to_crop
65
+ crop_length
62
66
  pagination
63
67
  faceting
64
- typoTolerance
68
+ typo_tolerance
65
69
  ].freeze
66
70
 
67
- CAMELIZE_OPTIONS = %i[pagination faceting typoTolerance].freeze
71
+ CAMELIZE_OPTIONS = %i[pagination faceting typo_tolerance].freeze
68
72
 
69
73
  OPTIONS.each do |option|
70
74
  define_method option do |value|
@@ -265,9 +269,9 @@ module MeiliSearch
265
269
  ::MeiliSearch::Index.instance_methods(false).each do |m|
266
270
  define_method(m) do |*args, &block|
267
271
  if m == :update_settings
268
- args[0].delete(:attributesToHighlight) if args[0][:attributesToHighlight]
269
- args[0].delete(:attributesToCrop) if args[0][:attributesToCrop]
270
- args[0].delete(:cropLength) if args[0][:cropLength]
272
+ args[0].delete(:attributes_to_highlight) if args[0][:attributes_to_highlight]
273
+ args[0].delete(:attributes_to_crop) if args[0][:attributes_to_crop]
274
+ args[0].delete(:crop_length) if args[0][:crop_length]
271
275
  end
272
276
 
273
277
  SafeIndex.log_or_throw(m, @raise_on_failure) do
@@ -304,7 +308,7 @@ module MeiliSearch
304
308
  raise e if raise_on_failure
305
309
 
306
310
  # log the error
307
- (::Rails.logger || Logger.new($stdout)).info("[meilisearch-rails] #{e.message}")
311
+ MeiliSearch::Rails.logger.info("[meilisearch-rails] #{e.message}")
308
312
  # return something
309
313
  case method.to_s
310
314
  when 'search'
@@ -444,6 +448,8 @@ module MeiliSearch
444
448
  after_destroy { |searchable| searchable.ms_enqueue_remove_from_index!(ms_synchronous?) }
445
449
  end
446
450
  end
451
+
452
+ warn_searchable_missing_attributes
447
453
  end
448
454
 
449
455
  def ms_without_auto_index(&block)
@@ -581,15 +587,15 @@ module MeiliSearch
581
587
  def ms_raw_search(q, params = {})
582
588
  index_uid = params.delete(:index) || params.delete('index')
583
589
 
584
- unless meilisearch_settings.get_setting(:attributesToHighlight).nil?
585
- params[:attributesToHighlight] = meilisearch_settings.get_setting(:attributesToHighlight)
590
+ unless meilisearch_settings.get_setting(:attributes_to_highlight).nil?
591
+ params[:attributes_to_highlight] = meilisearch_settings.get_setting(:attributes_to_highlight)
586
592
  end
587
593
 
588
- unless meilisearch_settings.get_setting(:attributesToCrop).nil?
589
- params[:attributesToCrop] = meilisearch_settings.get_setting(:attributesToCrop)
594
+ unless meilisearch_settings.get_setting(:attributes_to_crop).nil?
595
+ params[:attributes_to_crop] = meilisearch_settings.get_setting(:attributes_to_crop)
590
596
 
591
- unless meilisearch_settings.get_setting(:cropLength).nil?
592
- params[:cropLength] = meilisearch_settings.get_setting(:cropLength)
597
+ unless meilisearch_settings.get_setting(:crop_length).nil?
598
+ params[:crop_length] = meilisearch_settings.get_setting(:crop_length)
593
599
  end
594
600
  end
595
601
 
@@ -858,6 +864,19 @@ module MeiliSearch
858
864
  # We don't know if the attribute has changed, so conservatively assume it has
859
865
  true
860
866
  end
867
+
868
+ def warn_searchable_missing_attributes
869
+ searchables = meilisearch_settings.get_setting(:searchable_attributes)
870
+ attrs = meilisearch_settings.get_setting(:attributes)&.keys
871
+
872
+ if searchables.present? && attrs.present?
873
+ (searchables.map(&:to_s) - attrs.map(&:to_s)).each do |missing_searchable|
874
+ MeiliSearch::Rails.logger.warn(
875
+ "[meilisearch-rails] #{name}##{missing_searchable} declared in searchable_attributes but not in attributes. Please add it to attributes if it should be searchable."
876
+ )
877
+ end
878
+ end
879
+ end
861
880
  end
862
881
 
863
882
  # these are the instance methods included
@@ -34,5 +34,5 @@ Gem::Specification.new do |s|
34
34
 
35
35
  s.required_ruby_version = '>= 2.6.0'
36
36
 
37
- s.add_dependency 'meilisearch', '~> 0.25.0'
37
+ s.add_dependency 'meilisearch', '~> 0.26.0'
38
38
  end
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.10.0
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Meili
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-18 00:00:00.000000000 Z
11
+ date: 2023-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: meilisearch
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.25.0
19
+ version: 0.26.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.25.0
26
+ version: 0.26.0
27
27
  description: Meilisearch integration for Ruby on Rails. See https://github.com/meilisearch/meilisearch
28
28
  email: bonjour@meilisearch.com
29
29
  executables: []
@@ -47,6 +47,7 @@ files:
47
47
  - lib/meilisearch/rails/pagination/will_paginate.rb
48
48
  - lib/meilisearch/rails/railtie.rb
49
49
  - lib/meilisearch/rails/tasks/meilisearch.rake
50
+ - lib/meilisearch/rails/templates/initializer.rb
50
51
  - lib/meilisearch/rails/utilities.rb
51
52
  - lib/meilisearch/rails/version.rb
52
53
  - meilisearch-rails.gemspec
@@ -69,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  - !ruby/object:Gem::Version
70
71
  version: '0'
71
72
  requirements: []
72
- rubygems_version: 3.0.3.1
73
+ rubygems_version: 3.1.6
73
74
  signing_key:
74
75
  specification_version: 4
75
76
  summary: Meilisearch integration for Ruby on Rails.