pg_search 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|