pg_search 2.2.0 → 2.3.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/.editorconfig +10 -0
- data/CHANGELOG.md +5 -0
- data/README.md +27 -27
- data/lib/pg_search.rb +10 -51
- data/lib/pg_search/document.rb +1 -1
- data/lib/pg_search/model.rb +57 -0
- data/lib/pg_search/version.rb +1 -1
- data/spec/integration/associations_spec.rb +11 -11
- data/spec/integration/deprecation_spec.rb +33 -0
- data/spec/integration/pagination_spec.rb +1 -1
- data/spec/integration/pg_search_spec.rb +8 -8
- data/spec/integration/single_table_inheritance_spec.rb +2 -2
- data/spec/lib/pg_search/configuration/association_spec.rb +2 -2
- data/spec/lib/pg_search/configuration/foreign_column_spec.rb +1 -1
- data/spec/lib/pg_search/multisearch/rebuilder_spec.rb +8 -8
- data/spec/lib/pg_search/multisearch_spec.rb +1 -1
- data/spec/lib/pg_search/multisearchable_spec.rb +6 -6
- data/spec/lib/pg_search_spec.rb +4 -4
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8e6c02c032d2a7a39ebe47e50584410cebe923e868dc6be720af23cd3748e55
|
4
|
+
data.tar.gz: 24d70a673be8c9993c007b812af1d9af89cc565dfbbae9ed37c205d90ca893da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06e43bdc63bd98ea57943068cde6723780000ca3765a016d9baecdac3eea7006a1deae35885654b88b4752e3ad6f136190ac8602ffad62b3aac356425fad66d0
|
7
|
+
data.tar.gz: 500d85f688710b48bf235eb1765c66e569dd7db98d95f03eaa81242f12c746d2ce8a57176185700c8d1b6ca903039d2c9b42fd5b71c84a8e4f8c46d7ef3464f7
|
data/.editorconfig
ADDED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -49,7 +49,7 @@ To add PgSearch to an Active Record model, simply include the PgSearch module.
|
|
49
49
|
|
50
50
|
```ruby
|
51
51
|
class Shape < ActiveRecord::Base
|
52
|
-
include PgSearch
|
52
|
+
include PgSearch::Model
|
53
53
|
end
|
54
54
|
```
|
55
55
|
|
@@ -87,12 +87,12 @@ multisearchable in its class definition.
|
|
87
87
|
|
88
88
|
```ruby
|
89
89
|
class EpicPoem < ActiveRecord::Base
|
90
|
-
include PgSearch
|
90
|
+
include PgSearch::Model
|
91
91
|
multisearchable against: [:title, :author]
|
92
92
|
end
|
93
93
|
|
94
94
|
class Flower < ActiveRecord::Base
|
95
|
-
include PgSearch
|
95
|
+
include PgSearch::Model
|
96
96
|
multisearchable against: :color
|
97
97
|
end
|
98
98
|
```
|
@@ -112,13 +112,13 @@ particular record should be included.
|
|
112
112
|
|
113
113
|
```ruby
|
114
114
|
class Convertible < ActiveRecord::Base
|
115
|
-
include PgSearch
|
115
|
+
include PgSearch::Model
|
116
116
|
multisearchable against: [:make, :model],
|
117
117
|
if: :available_in_red?
|
118
118
|
end
|
119
119
|
|
120
120
|
class Jalopy < ActiveRecord::Base
|
121
|
-
include PgSearch
|
121
|
+
include PgSearch::Model
|
122
122
|
multisearchable against: [:make, :model],
|
123
123
|
if: lambda { |record| record.model_year > 1970 }
|
124
124
|
end
|
@@ -132,7 +132,7 @@ timestamp.
|
|
132
132
|
|
133
133
|
```ruby
|
134
134
|
class AntipatternExample
|
135
|
-
include PgSearch
|
135
|
+
include PgSearch::Model
|
136
136
|
multisearchable against: [:contents],
|
137
137
|
if: :published?
|
138
138
|
|
@@ -374,7 +374,7 @@ To search against a column, pass a symbol as the :against option.
|
|
374
374
|
|
375
375
|
```ruby
|
376
376
|
class BlogPost < ActiveRecord::Base
|
377
|
-
include PgSearch
|
377
|
+
include PgSearch::Model
|
378
378
|
pg_search_scope :search_by_title, against: :title
|
379
379
|
end
|
380
380
|
```
|
@@ -394,7 +394,7 @@ Just pass an Array if you'd like to search more than one column.
|
|
394
394
|
|
395
395
|
```ruby
|
396
396
|
class Person < ActiveRecord::Base
|
397
|
-
include PgSearch
|
397
|
+
include PgSearch::Model
|
398
398
|
pg_search_scope :search_by_full_name, against: [:first_name, :last_name]
|
399
399
|
end
|
400
400
|
```
|
@@ -421,7 +421,7 @@ value if you wanted.
|
|
421
421
|
|
422
422
|
```ruby
|
423
423
|
class Person < ActiveRecord::Base
|
424
|
-
include PgSearch
|
424
|
+
include PgSearch::Model
|
425
425
|
pg_search_scope :search_by_name, lambda { |name_part, query|
|
426
426
|
raise ArgumentError unless [:first, :last].include?(name_part)
|
427
427
|
{
|
@@ -459,7 +459,7 @@ class Cheese < ActiveRecord::Base
|
|
459
459
|
end
|
460
460
|
|
461
461
|
class Salami < ActiveRecord::Base
|
462
|
-
include PgSearch
|
462
|
+
include PgSearch::Model
|
463
463
|
|
464
464
|
belongs_to :cracker
|
465
465
|
has_many :cheeses, through: :cracker
|
@@ -494,7 +494,7 @@ search techniques.
|
|
494
494
|
|
495
495
|
```ruby
|
496
496
|
class Beer < ActiveRecord::Base
|
497
|
-
include PgSearch
|
497
|
+
include PgSearch::Model
|
498
498
|
pg_search_scope :search_name, against: :name, using: [:tsearch, :trigram, :dmetaphone]
|
499
499
|
end
|
500
500
|
```
|
@@ -520,7 +520,7 @@ subtitle, and finally the content.
|
|
520
520
|
|
521
521
|
```ruby
|
522
522
|
class NewsArticle < ActiveRecord::Base
|
523
|
-
include PgSearch
|
523
|
+
include PgSearch::Model
|
524
524
|
pg_search_scope :search_full_text, against: {
|
525
525
|
title: 'A',
|
526
526
|
subtitle: 'B',
|
@@ -535,7 +535,7 @@ weight. If you omit the weight, a default will be used.
|
|
535
535
|
|
536
536
|
```ruby
|
537
537
|
class NewsArticle < ActiveRecord::Base
|
538
|
-
include PgSearch
|
538
|
+
include PgSearch::Model
|
539
539
|
pg_search_scope :search_full_text, against: [
|
540
540
|
[:title, 'A'],
|
541
541
|
[:subtitle, 'B'],
|
@@ -544,7 +544,7 @@ class NewsArticle < ActiveRecord::Base
|
|
544
544
|
end
|
545
545
|
|
546
546
|
class NewsArticle < ActiveRecord::Base
|
547
|
-
include PgSearch
|
547
|
+
include PgSearch::Model
|
548
548
|
pg_search_scope :search_full_text, against: [
|
549
549
|
[:title, 'A'],
|
550
550
|
{subtitle: 'B'},
|
@@ -562,7 +562,7 @@ shown in the following example.
|
|
562
562
|
|
563
563
|
```ruby
|
564
564
|
class Superhero < ActiveRecord::Base
|
565
|
-
include PgSearch
|
565
|
+
include PgSearch::Model
|
566
566
|
pg_search_scope :whose_name_starts_with,
|
567
567
|
against: :name,
|
568
568
|
using: {
|
@@ -591,7 +591,7 @@ term that you were trying to exclude.
|
|
591
591
|
|
592
592
|
```ruby
|
593
593
|
class Animal < ActiveRecord::Base
|
594
|
-
include PgSearch
|
594
|
+
include PgSearch::Model
|
595
595
|
pg_search_scope :with_name_matching,
|
596
596
|
against: :name,
|
597
597
|
using: {
|
@@ -620,7 +620,7 @@ dictionary will be used.
|
|
620
620
|
|
621
621
|
```ruby
|
622
622
|
class BoringTweet < ActiveRecord::Base
|
623
|
-
include PgSearch
|
623
|
+
include PgSearch::Model
|
624
624
|
pg_search_scope :kinda_matching,
|
625
625
|
against: :text,
|
626
626
|
using: {
|
@@ -664,7 +664,7 @@ their numbers together.
|
|
664
664
|
|
665
665
|
```ruby
|
666
666
|
class BigLongDocument < ActiveRecord::Base
|
667
|
-
include PgSearch
|
667
|
+
include PgSearch::Model
|
668
668
|
pg_search_scope :regular_search,
|
669
669
|
against: :text
|
670
670
|
|
@@ -688,7 +688,7 @@ models containing any word in the search terms.
|
|
688
688
|
|
689
689
|
```ruby
|
690
690
|
class Number < ActiveRecord::Base
|
691
|
-
include PgSearch
|
691
|
+
include PgSearch::Model
|
692
692
|
pg_search_scope :search_any_word,
|
693
693
|
against: :text,
|
694
694
|
using: {
|
@@ -714,7 +714,7 @@ but will not include it in the query's WHERE condition.
|
|
714
714
|
|
715
715
|
```ruby
|
716
716
|
class Person < ActiveRecord::Base
|
717
|
-
include PgSearch
|
717
|
+
include PgSearch::Model
|
718
718
|
pg_search_scope :search,
|
719
719
|
against: :name,
|
720
720
|
using: {
|
@@ -739,7 +739,7 @@ Adding .with_pg_search_highlight after the pg_search_scope you can access to
|
|
739
739
|
|
740
740
|
```ruby
|
741
741
|
class Person < ActiveRecord::Base
|
742
|
-
include PgSearch
|
742
|
+
include PgSearch::Model
|
743
743
|
pg_search_scope :search,
|
744
744
|
against: :bio,
|
745
745
|
using: {
|
@@ -793,7 +793,7 @@ The following example shows how to use :dmetaphone.
|
|
793
793
|
|
794
794
|
```ruby
|
795
795
|
class Word < ActiveRecord::Base
|
796
|
-
include PgSearch
|
796
|
+
include PgSearch::Model
|
797
797
|
pg_search_scope :that_sounds_like,
|
798
798
|
against: :spelling,
|
799
799
|
using: :dmetaphone
|
@@ -824,7 +824,7 @@ feature can be used.
|
|
824
824
|
|
825
825
|
```ruby
|
826
826
|
class Website < ActiveRecord::Base
|
827
|
-
include PgSearch
|
827
|
+
include PgSearch::Model
|
828
828
|
pg_search_scope :kinda_spelled_like,
|
829
829
|
against: :name,
|
830
830
|
using: :trigram
|
@@ -849,7 +849,7 @@ threshold will force a table scan as the derived query uses the
|
|
849
849
|
|
850
850
|
```ruby
|
851
851
|
class Vegetable < ActiveRecord::Base
|
852
|
-
include PgSearch
|
852
|
+
include PgSearch::Model
|
853
853
|
|
854
854
|
pg_search_scope :strictly_spelled_like,
|
855
855
|
against: :name,
|
@@ -887,7 +887,7 @@ and the word with greatest similarity.
|
|
887
887
|
|
888
888
|
```ruby
|
889
889
|
class Sentence < ActiveRecord::Base
|
890
|
-
include PgSearch
|
890
|
+
include PgSearch::Model
|
891
891
|
|
892
892
|
pg_search_scope :similarity_like,
|
893
893
|
against: :words,
|
@@ -918,7 +918,7 @@ which fields using the 'only' option:
|
|
918
918
|
|
919
919
|
```ruby
|
920
920
|
class Image < ActiveRecord::Base
|
921
|
-
include PgSearch
|
921
|
+
include PgSearch::Model
|
922
922
|
|
923
923
|
pg_search_scope :combined_search,
|
924
924
|
against: [:file_name, :short_description, :long_description]
|
@@ -953,7 +953,7 @@ must be installed before this feature can be used.
|
|
953
953
|
|
954
954
|
```ruby
|
955
955
|
class SpanishQuestion < ActiveRecord::Base
|
956
|
-
include PgSearch
|
956
|
+
include PgSearch::Model
|
957
957
|
pg_search_scope :gringo_search,
|
958
958
|
against: :word,
|
959
959
|
ignoring: :accents
|
data/lib/pg_search.rb
CHANGED
@@ -7,6 +7,7 @@ require "active_support/core_ext/string/strip"
|
|
7
7
|
|
8
8
|
require "pg_search/configuration"
|
9
9
|
require "pg_search/features"
|
10
|
+
require "pg_search/model"
|
10
11
|
require "pg_search/multisearch"
|
11
12
|
require "pg_search/multisearchable"
|
12
13
|
require "pg_search/normalizer"
|
@@ -14,7 +15,15 @@ require "pg_search/scope_options"
|
|
14
15
|
require "pg_search/version"
|
15
16
|
|
16
17
|
module PgSearch
|
17
|
-
|
18
|
+
def self.included(base)
|
19
|
+
ActiveSupport::Deprecation.warn <<-MESSAGE.strip_heredoc
|
20
|
+
Directly including `PgSearch` into an Active Record model is deprecated and will be removed in pg_search 3.0.
|
21
|
+
|
22
|
+
Please replace `include PgSearch` with `include PgSearch::Model`.
|
23
|
+
MESSAGE
|
24
|
+
|
25
|
+
base.include PgSearch::Model
|
26
|
+
end
|
18
27
|
|
19
28
|
mattr_accessor :multisearch_options
|
20
29
|
self.multisearch_options = {}
|
@@ -22,30 +31,6 @@ module PgSearch
|
|
22
31
|
mattr_accessor :unaccent_function
|
23
32
|
self.unaccent_function = "unaccent"
|
24
33
|
|
25
|
-
module ClassMethods
|
26
|
-
def pg_search_scope(name, options)
|
27
|
-
options_proc = if options.respond_to?(:call)
|
28
|
-
options
|
29
|
-
elsif options.respond_to?(:merge)
|
30
|
-
->(query) { { query: query }.merge(options) }
|
31
|
-
else
|
32
|
-
raise ArgumentError, 'pg_search_scope expects a Hash or Proc'
|
33
|
-
end
|
34
|
-
|
35
|
-
define_singleton_method(name) do |*args|
|
36
|
-
config = Configuration.new(options_proc.call(*args), self)
|
37
|
-
scope_options = ScopeOptions.new(config)
|
38
|
-
scope_options.apply(self)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def multisearchable(options = {})
|
43
|
-
include PgSearch::Multisearchable
|
44
|
-
class_attribute :pg_search_multisearchable_options
|
45
|
-
self.pg_search_multisearchable_options = options
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
34
|
class << self
|
50
35
|
def multisearch(*args)
|
51
36
|
PgSearch::Document.search(*args)
|
@@ -67,32 +52,6 @@ module PgSearch
|
|
67
52
|
end
|
68
53
|
end
|
69
54
|
|
70
|
-
def method_missing(symbol, *args)
|
71
|
-
case symbol
|
72
|
-
when :pg_search_rank
|
73
|
-
raise PgSearchRankNotSelected unless respond_to?(:pg_search_rank)
|
74
|
-
|
75
|
-
read_attribute(:pg_search_rank).to_f
|
76
|
-
when :pg_search_highlight
|
77
|
-
raise PgSearchHighlightNotSelected unless respond_to?(:pg_search_highlight)
|
78
|
-
|
79
|
-
read_attribute(:pg_search_highlight)
|
80
|
-
else
|
81
|
-
super
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def respond_to_missing?(symbol, *args)
|
86
|
-
case symbol
|
87
|
-
when :pg_search_rank
|
88
|
-
attributes.key?(:pg_search_rank)
|
89
|
-
when :pg_search_highlight
|
90
|
-
attributes.key?(:pg_search_highlight)
|
91
|
-
else
|
92
|
-
super
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
55
|
class PgSearchRankNotSelected < StandardError
|
97
56
|
def message
|
98
57
|
"You must chain .with_pg_search_rank after the pg_search_scope " \
|
data/lib/pg_search/document.rb
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PgSearch
|
4
|
+
module Model
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def pg_search_scope(name, options)
|
9
|
+
options_proc = if options.respond_to?(:call)
|
10
|
+
options
|
11
|
+
elsif options.respond_to?(:merge)
|
12
|
+
->(query) { { query: query }.merge(options) }
|
13
|
+
else
|
14
|
+
raise ArgumentError, 'pg_search_scope expects a Hash or Proc'
|
15
|
+
end
|
16
|
+
|
17
|
+
define_singleton_method(name) do |*args|
|
18
|
+
config = Configuration.new(options_proc.call(*args), self)
|
19
|
+
scope_options = ScopeOptions.new(config)
|
20
|
+
scope_options.apply(self)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def multisearchable(options = {})
|
25
|
+
include PgSearch::Multisearchable
|
26
|
+
class_attribute :pg_search_multisearchable_options
|
27
|
+
self.pg_search_multisearchable_options = options
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def method_missing(symbol, *args)
|
32
|
+
case symbol
|
33
|
+
when :pg_search_rank
|
34
|
+
raise PgSearchRankNotSelected unless respond_to?(:pg_search_rank)
|
35
|
+
|
36
|
+
read_attribute(:pg_search_rank).to_f
|
37
|
+
when :pg_search_highlight
|
38
|
+
raise PgSearchHighlightNotSelected unless respond_to?(:pg_search_highlight)
|
39
|
+
|
40
|
+
read_attribute(:pg_search_highlight)
|
41
|
+
else
|
42
|
+
super
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def respond_to_missing?(symbol, *args)
|
47
|
+
case symbol
|
48
|
+
when :pg_search_rank
|
49
|
+
attributes.key?(:pg_search_rank)
|
50
|
+
when :pg_search_highlight
|
51
|
+
attributes.key?(:pg_search_highlight)
|
52
|
+
else
|
53
|
+
super
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/pg_search/version.rb
CHANGED
@@ -18,7 +18,7 @@ describe PgSearch do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
model do
|
21
|
-
include PgSearch
|
21
|
+
include PgSearch::Model
|
22
22
|
belongs_to :another_model, class_name: 'AssociatedModel'
|
23
23
|
|
24
24
|
pg_search_scope :with_another, associated_against: { another_model: :title }
|
@@ -55,7 +55,7 @@ describe PgSearch do
|
|
55
55
|
end
|
56
56
|
|
57
57
|
model do
|
58
|
-
include PgSearch
|
58
|
+
include PgSearch::Model
|
59
59
|
belongs_to :another_model, class_name: 'AssociatedModel'
|
60
60
|
|
61
61
|
pg_search_scope :with_associated, against: :title, associated_against: { another_model: :title }
|
@@ -91,7 +91,7 @@ describe PgSearch do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
model do
|
94
|
-
include PgSearch
|
94
|
+
include PgSearch::Model
|
95
95
|
has_many :other_models, class_name: 'AssociatedModelWithHasMany', foreign_key: 'ModelWithHasMany_id'
|
96
96
|
|
97
97
|
pg_search_scope :with_associated, against: [:title], associated_against: { other_models: :title }
|
@@ -163,7 +163,7 @@ describe PgSearch do
|
|
163
163
|
end
|
164
164
|
|
165
165
|
model do
|
166
|
-
include PgSearch
|
166
|
+
include PgSearch::Model
|
167
167
|
|
168
168
|
has_many :models_of_first_type,
|
169
169
|
class_name: 'FirstAssociatedModel',
|
@@ -222,7 +222,7 @@ describe PgSearch do
|
|
222
222
|
end
|
223
223
|
|
224
224
|
model do
|
225
|
-
include PgSearch
|
225
|
+
include PgSearch::Model
|
226
226
|
|
227
227
|
has_many :things,
|
228
228
|
class_name: 'DoublyAssociatedModel',
|
@@ -282,7 +282,7 @@ describe PgSearch do
|
|
282
282
|
end
|
283
283
|
|
284
284
|
model do
|
285
|
-
include PgSearch
|
285
|
+
include PgSearch::Model
|
286
286
|
belongs_to :another_model, class_name: 'AssociatedModel'
|
287
287
|
|
288
288
|
pg_search_scope :with_associated, associated_against: { another_model: %i[title author] }
|
@@ -335,7 +335,7 @@ describe PgSearch do
|
|
335
335
|
end
|
336
336
|
|
337
337
|
model do
|
338
|
-
include PgSearch
|
338
|
+
include PgSearch::Model
|
339
339
|
belongs_to :another_model, class_name: 'AssociatedModel'
|
340
340
|
|
341
341
|
pg_search_scope :with_associated, associated_against: { another_model: :number }
|
@@ -366,7 +366,7 @@ describe PgSearch do
|
|
366
366
|
|
367
367
|
model do
|
368
368
|
has_many :children
|
369
|
-
include PgSearch
|
369
|
+
include PgSearch::Model
|
370
370
|
pg_search_scope :search_name, against: :name
|
371
371
|
end
|
372
372
|
end
|
@@ -409,7 +409,7 @@ describe PgSearch do
|
|
409
409
|
end
|
410
410
|
|
411
411
|
model do
|
412
|
-
include PgSearch
|
412
|
+
include PgSearch::Model
|
413
413
|
belongs_to :model_with_association
|
414
414
|
|
415
415
|
pg_search_scope :search_content, against: :content
|
@@ -455,7 +455,7 @@ describe PgSearch do
|
|
455
455
|
end
|
456
456
|
|
457
457
|
model do
|
458
|
-
include PgSearch
|
458
|
+
include PgSearch::Model
|
459
459
|
pg_search_scope :search, against: :title, using: %i[tsearch trigram]
|
460
460
|
end
|
461
461
|
end
|
@@ -496,7 +496,7 @@ describe PgSearch do
|
|
496
496
|
end
|
497
497
|
|
498
498
|
model do
|
499
|
-
include PgSearch
|
499
|
+
include PgSearch::Model
|
500
500
|
pg_search_scope :search, against: :title, using: %i[tsearch trigram]
|
501
501
|
end
|
502
502
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe "Including the deprecated PgSearch module" do
|
6
|
+
with_model :SomeModel do
|
7
|
+
model do
|
8
|
+
ActiveSupport::Deprecation.silence do
|
9
|
+
include PgSearch
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
with_model :AnotherModel
|
15
|
+
|
16
|
+
it "includes PgSearch::Model" do
|
17
|
+
expect(SomeModel.ancestors).to include PgSearch::Model
|
18
|
+
end
|
19
|
+
|
20
|
+
it "prints a deprecation message" do
|
21
|
+
allow(ActiveSupport::Deprecation).to receive(:warn)
|
22
|
+
|
23
|
+
AnotherModel.include(PgSearch)
|
24
|
+
|
25
|
+
expect(ActiveSupport::Deprecation).to have_received(:warn).with(
|
26
|
+
<<-MESSAGE.strip_heredoc
|
27
|
+
Directly including `PgSearch` into an Active Record model is deprecated and will be removed in pg_search 3.0.
|
28
|
+
|
29
|
+
Please replace `include PgSearch` with `include PgSearch::Model`.
|
30
|
+
MESSAGE
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
@@ -12,7 +12,7 @@ describe "an Active Record model which includes PgSearch" do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
model do
|
15
|
-
include PgSearch
|
15
|
+
include PgSearch::Model
|
16
16
|
belongs_to :parent_model
|
17
17
|
end
|
18
18
|
end
|
@@ -22,7 +22,7 @@ describe "an Active Record model which includes PgSearch" do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
model do
|
25
|
-
include PgSearch
|
25
|
+
include PgSearch::Model
|
26
26
|
has_many :models_with_pg_search
|
27
27
|
scope :active, -> { where(active: true) }
|
28
28
|
end
|
@@ -208,7 +208,7 @@ describe "an Active Record model which includes PgSearch" do
|
|
208
208
|
end
|
209
209
|
|
210
210
|
model do
|
211
|
-
include PgSearch
|
211
|
+
include PgSearch::Model
|
212
212
|
belongs_to :person
|
213
213
|
pg_search_scope :search_city, against: [:city]
|
214
214
|
end
|
@@ -220,7 +220,7 @@ describe "an Active Record model which includes PgSearch" do
|
|
220
220
|
end
|
221
221
|
|
222
222
|
model do
|
223
|
-
include PgSearch
|
223
|
+
include PgSearch::Model
|
224
224
|
has_many :houses
|
225
225
|
pg_search_scope :named, against: [:name]
|
226
226
|
scope :with_house_in_city, lambda { |city|
|
@@ -462,7 +462,7 @@ describe "an Active Record model which includes PgSearch" do
|
|
462
462
|
end
|
463
463
|
|
464
464
|
model do
|
465
|
-
include PgSearch
|
465
|
+
include PgSearch::Model
|
466
466
|
|
467
467
|
# WARNING: searching timestamps is not something PostgreSQL
|
468
468
|
# full-text search is good at. Use at your own risk.
|
@@ -995,7 +995,7 @@ describe "an Active Record model which includes PgSearch" do
|
|
995
995
|
end
|
996
996
|
|
997
997
|
model do
|
998
|
-
include PgSearch
|
998
|
+
include PgSearch::Model
|
999
999
|
has_many :comments
|
1000
1000
|
end
|
1001
1001
|
end
|
@@ -1038,7 +1038,7 @@ describe "an Active Record model which includes PgSearch" do
|
|
1038
1038
|
context 'using multiple tsvector columns' do
|
1039
1039
|
with_model :ModelWithTsvector do
|
1040
1040
|
model do
|
1041
|
-
include PgSearch
|
1041
|
+
include PgSearch::Model
|
1042
1042
|
|
1043
1043
|
pg_search_scope :search_by_multiple_tsvector_columns,
|
1044
1044
|
against: ['content', 'message'],
|
@@ -1066,7 +1066,7 @@ describe "an Active Record model which includes PgSearch" do
|
|
1066
1066
|
t.tsvector 'content_tsvector'
|
1067
1067
|
end
|
1068
1068
|
|
1069
|
-
model { include PgSearch }
|
1069
|
+
model { include PgSearch::Model }
|
1070
1070
|
end
|
1071
1071
|
|
1072
1072
|
let!(:expected) { ModelWithTsvector.create!(content: 'tiling is grouty') }
|
@@ -11,7 +11,7 @@ describe "a pg_search_scope on an STI subclass" do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
model do
|
14
|
-
include PgSearch
|
14
|
+
include PgSearch::Model
|
15
15
|
pg_search_scope :search_content, against: :content
|
16
16
|
end
|
17
17
|
end
|
@@ -51,7 +51,7 @@ describe "a pg_search_scope on an STI subclass" do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
model do
|
54
|
-
include PgSearch
|
54
|
+
include PgSearch::Model
|
55
55
|
self.inheritance_column = 'custom_type'
|
56
56
|
pg_search_scope :search_content, against: :content
|
57
57
|
end
|
@@ -17,7 +17,7 @@ describe PgSearch::Configuration::Association do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
model do
|
20
|
-
include PgSearch
|
20
|
+
include PgSearch::Model
|
21
21
|
has_one :avatar, class_name: "Avatar"
|
22
22
|
belongs_to :site
|
23
23
|
|
@@ -32,7 +32,7 @@ describe PgSearch::Configuration::Association do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
model do
|
35
|
-
include PgSearch
|
35
|
+
include PgSearch::Model
|
36
36
|
has_many :users, class_name: "User"
|
37
37
|
|
38
38
|
pg_search_scope :with_users, associated_against: { users: :name }
|
@@ -17,7 +17,7 @@ describe PgSearch::Configuration::ForeignColumn do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
model do
|
20
|
-
include PgSearch
|
20
|
+
include PgSearch::Model
|
21
21
|
belongs_to :another_model, class_name: 'AssociatedModel'
|
22
22
|
|
23
23
|
pg_search_scope :with_another, associated_against: { another_model: :title }
|
@@ -28,7 +28,7 @@ describe PgSearch::Multisearch::Rebuilder do
|
|
28
28
|
context "and multisearchable is not conditional" do
|
29
29
|
with_model :Model do
|
30
30
|
model do
|
31
|
-
include PgSearch
|
31
|
+
include PgSearch::Model
|
32
32
|
multisearchable
|
33
33
|
|
34
34
|
def rebuild_pg_search_documents
|
@@ -52,7 +52,7 @@ describe PgSearch::Multisearch::Rebuilder do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
model do
|
55
|
-
include PgSearch
|
55
|
+
include PgSearch::Model
|
56
56
|
multisearchable conditional_key => :active?
|
57
57
|
|
58
58
|
def rebuild_pg_search_documents
|
@@ -79,7 +79,7 @@ describe PgSearch::Multisearch::Rebuilder do
|
|
79
79
|
end
|
80
80
|
|
81
81
|
model do
|
82
|
-
include PgSearch
|
82
|
+
include PgSearch::Model
|
83
83
|
multisearchable against: :name
|
84
84
|
end
|
85
85
|
end
|
@@ -141,7 +141,7 @@ describe PgSearch::Multisearch::Rebuilder do
|
|
141
141
|
end
|
142
142
|
|
143
143
|
model do
|
144
|
-
include PgSearch
|
144
|
+
include PgSearch::Model
|
145
145
|
multisearchable against: :name
|
146
146
|
end
|
147
147
|
end
|
@@ -160,7 +160,7 @@ describe PgSearch::Multisearch::Rebuilder do
|
|
160
160
|
end
|
161
161
|
|
162
162
|
model do
|
163
|
-
include PgSearch
|
163
|
+
include PgSearch::Model
|
164
164
|
multisearchable against: :name
|
165
165
|
end
|
166
166
|
end
|
@@ -206,7 +206,7 @@ describe PgSearch::Multisearch::Rebuilder do
|
|
206
206
|
end
|
207
207
|
|
208
208
|
model do
|
209
|
-
include PgSearch
|
209
|
+
include PgSearch::Model
|
210
210
|
multisearchable against: [:foo]
|
211
211
|
|
212
212
|
def foo
|
@@ -246,7 +246,7 @@ describe PgSearch::Multisearch::Rebuilder do
|
|
246
246
|
end
|
247
247
|
|
248
248
|
model do
|
249
|
-
include PgSearch
|
249
|
+
include PgSearch::Model
|
250
250
|
multisearchable if: :active?
|
251
251
|
end
|
252
252
|
end
|
@@ -282,7 +282,7 @@ describe PgSearch::Multisearch::Rebuilder do
|
|
282
282
|
end
|
283
283
|
|
284
284
|
model do
|
285
|
-
include PgSearch
|
285
|
+
include PgSearch::Model
|
286
286
|
multisearchable unless: :inactive?
|
287
287
|
end
|
288
288
|
end
|
@@ -8,7 +8,7 @@ describe PgSearch::Multisearchable do
|
|
8
8
|
describe "a model that is multisearchable" do
|
9
9
|
with_model :ModelThatIsMultisearchable do
|
10
10
|
model do
|
11
|
-
include PgSearch
|
11
|
+
include PgSearch::Model
|
12
12
|
multisearchable
|
13
13
|
end
|
14
14
|
end
|
@@ -19,7 +19,7 @@ describe PgSearch::Multisearchable do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
model do
|
22
|
-
include PgSearch
|
22
|
+
include PgSearch::Model
|
23
23
|
multisearchable
|
24
24
|
|
25
25
|
has_many :multisearchable_children, dependent: :destroy
|
@@ -287,7 +287,7 @@ describe PgSearch::Multisearchable do
|
|
287
287
|
end
|
288
288
|
|
289
289
|
model do
|
290
|
-
include PgSearch
|
290
|
+
include PgSearch::Model
|
291
291
|
multisearchable if: ->(record) { record.multisearchable? }
|
292
292
|
end
|
293
293
|
end
|
@@ -415,7 +415,7 @@ describe PgSearch::Multisearchable do
|
|
415
415
|
end
|
416
416
|
|
417
417
|
model do
|
418
|
-
include PgSearch
|
418
|
+
include PgSearch::Model
|
419
419
|
multisearchable unless: ->(record) { record.not_multisearchable? }
|
420
420
|
end
|
421
421
|
end
|
@@ -544,7 +544,7 @@ describe PgSearch::Multisearchable do
|
|
544
544
|
end
|
545
545
|
|
546
546
|
model do
|
547
|
-
include PgSearch
|
547
|
+
include PgSearch::Model
|
548
548
|
multisearchable if: :multisearchable?
|
549
549
|
end
|
550
550
|
end
|
@@ -676,7 +676,7 @@ describe PgSearch::Multisearchable do
|
|
676
676
|
end
|
677
677
|
|
678
678
|
model do
|
679
|
-
include PgSearch
|
679
|
+
include PgSearch::Model
|
680
680
|
multisearchable unless: :not_multisearchable?
|
681
681
|
end
|
682
682
|
end
|
data/spec/lib/pg_search_spec.rb
CHANGED
@@ -43,7 +43,7 @@ describe PgSearch do
|
|
43
43
|
t.string :title
|
44
44
|
end
|
45
45
|
model do
|
46
|
-
include PgSearch
|
46
|
+
include PgSearch::Model
|
47
47
|
multisearchable against: :title
|
48
48
|
end
|
49
49
|
end
|
@@ -76,7 +76,7 @@ describe PgSearch do
|
|
76
76
|
t.string :title
|
77
77
|
end
|
78
78
|
model do
|
79
|
-
include PgSearch
|
79
|
+
include PgSearch::Model
|
80
80
|
multisearchable against: :title
|
81
81
|
end
|
82
82
|
end
|
@@ -106,7 +106,7 @@ describe PgSearch do
|
|
106
106
|
|
107
107
|
before do
|
108
108
|
searchable_subclass_model = Class.new(SuperclassModel) do
|
109
|
-
include PgSearch
|
109
|
+
include PgSearch::Model
|
110
110
|
multisearchable against: :content
|
111
111
|
end
|
112
112
|
stub_const("SearchableSubclassModel", searchable_subclass_model)
|
@@ -196,7 +196,7 @@ describe PgSearch do
|
|
196
196
|
|
197
197
|
before do
|
198
198
|
searchable_subclass_model = Class.new(SuperclassModel) do
|
199
|
-
include PgSearch
|
199
|
+
include PgSearch::Model
|
200
200
|
multisearchable against: :content
|
201
201
|
end
|
202
202
|
stub_const("SearchableSubclassModel", searchable_subclass_model)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grant Hutchins
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-07-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -149,6 +149,7 @@ files:
|
|
149
149
|
- ".autotest"
|
150
150
|
- ".bundle/config"
|
151
151
|
- ".codeclimate.yml"
|
152
|
+
- ".editorconfig"
|
152
153
|
- ".gitignore"
|
153
154
|
- ".rspec"
|
154
155
|
- ".rubocop.yml"
|
@@ -175,6 +176,7 @@ files:
|
|
175
176
|
- lib/pg_search/migration/multisearch_generator.rb
|
176
177
|
- lib/pg_search/migration/templates/add_pg_search_dmetaphone_support_functions.rb.erb
|
177
178
|
- lib/pg_search/migration/templates/create_pg_search_documents.rb.erb
|
179
|
+
- lib/pg_search/model.rb
|
178
180
|
- lib/pg_search/multisearch.rb
|
179
181
|
- lib/pg_search/multisearch/rebuilder.rb
|
180
182
|
- lib/pg_search/multisearchable.rb
|
@@ -186,6 +188,7 @@ files:
|
|
186
188
|
- pg_search.gemspec
|
187
189
|
- spec/.rubocop.yml
|
188
190
|
- spec/integration/associations_spec.rb
|
191
|
+
- spec/integration/deprecation_spec.rb
|
189
192
|
- spec/integration/pagination_spec.rb
|
190
193
|
- spec/integration/pg_search_spec.rb
|
191
194
|
- spec/integration/single_table_inheritance_spec.rb
|
@@ -231,6 +234,7 @@ summary: PgSearch builds Active Record named scopes that take advantage of Postg
|
|
231
234
|
full text search
|
232
235
|
test_files:
|
233
236
|
- spec/integration/associations_spec.rb
|
237
|
+
- spec/integration/deprecation_spec.rb
|
234
238
|
- spec/integration/pagination_spec.rb
|
235
239
|
- spec/integration/pg_search_spec.rb
|
236
240
|
- spec/integration/single_table_inheritance_spec.rb
|