pg_search 2.3.0 → 2.3.6
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/.codeclimate.yml +1 -0
- data/.github/dependabot.yml +11 -0
- data/.github/workflows/ci.yml +75 -0
- data/.jrubyrc +1 -0
- data/.rubocop.yml +88 -7
- data/.travis.yml +20 -33
- data/CHANGELOG.md +50 -16
- data/CODE_OF_CONDUCT.md +76 -0
- data/Gemfile +1 -1
- data/LICENSE +1 -1
- data/README.md +73 -26
- data/Rakefile +7 -1
- data/lib/pg_search/configuration.rb +12 -2
- data/lib/pg_search/document.rb +1 -1
- data/lib/pg_search/features/dmetaphone.rb +4 -6
- data/lib/pg_search/features/feature.rb +1 -1
- data/lib/pg_search/features/tsearch.rb +14 -13
- data/lib/pg_search/migration/templates/add_pg_search_dmetaphone_support_functions.rb.erb +6 -6
- data/lib/pg_search/migration/templates/create_pg_search_documents.rb.erb +2 -2
- data/lib/pg_search/multisearch/rebuilder.rb +7 -3
- data/lib/pg_search/multisearch.rb +21 -4
- data/lib/pg_search/scope_options.rb +5 -8
- data/lib/pg_search/tasks.rb +2 -1
- data/lib/pg_search/version.rb +1 -1
- data/lib/pg_search.rb +6 -8
- data/pg_search.gemspec +14 -7
- data/spec/.rubocop.yml +2 -2
- data/spec/integration/.rubocop.yml +11 -0
- data/spec/integration/associations_spec.rb +17 -56
- data/spec/integration/deprecation_spec.rb +1 -1
- data/spec/integration/pg_search_spec.rb +94 -52
- data/spec/lib/pg_search/configuration/association_spec.rb +8 -6
- data/spec/lib/pg_search/features/dmetaphone_spec.rb +2 -2
- data/spec/lib/pg_search/features/trigram_spec.rb +16 -12
- data/spec/lib/pg_search/features/tsearch_spec.rb +16 -10
- data/spec/lib/pg_search/multisearch/rebuilder_spec.rb +116 -71
- data/spec/lib/pg_search/multisearch_spec.rb +57 -29
- data/spec/lib/pg_search/multisearchable_spec.rb +150 -97
- data/spec/lib/pg_search/normalizer_spec.rb +12 -10
- data/spec/lib/pg_search_spec.rb +66 -55
- data/spec/spec_helper.rb +22 -5
- data/spec/support/database.rb +7 -5
- metadata +109 -19
- data/.autotest +0 -5
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
require "spec_helper"
|
|
4
4
|
|
|
5
|
+
# rubocop:disable RSpec/NestedGroups
|
|
5
6
|
describe PgSearch::Normalizer do
|
|
6
7
|
describe "#add_normalization" do
|
|
7
8
|
context "when config[:ignore] includes :accents" do
|
|
8
9
|
context "when passed an Arel node" do
|
|
9
10
|
it "wraps the expression in unaccent()" do
|
|
10
|
-
config =
|
|
11
|
+
config = instance_double("PgSearch::Configuration", "config", ignore: [:accents])
|
|
11
12
|
node = Arel::Nodes::NamedFunction.new("foo", [Arel::Nodes.build_quoted("bar")])
|
|
12
13
|
|
|
13
|
-
normalizer =
|
|
14
|
+
normalizer = described_class.new(config)
|
|
14
15
|
expect(normalizer.add_normalization(node)).to eq("unaccent(foo('bar'))")
|
|
15
16
|
end
|
|
16
17
|
|
|
@@ -19,9 +20,9 @@ describe PgSearch::Normalizer do
|
|
|
19
20
|
allow(PgSearch).to receive(:unaccent_function).and_return("my_unaccent")
|
|
20
21
|
node = Arel::Nodes::NamedFunction.new("foo", [Arel::Nodes.build_quoted("bar")])
|
|
21
22
|
|
|
22
|
-
config =
|
|
23
|
+
config = instance_double("PgSearch::Configuration", "config", ignore: [:accents])
|
|
23
24
|
|
|
24
|
-
normalizer =
|
|
25
|
+
normalizer = described_class.new(config)
|
|
25
26
|
expect(normalizer.add_normalization(node)).to eq("my_unaccent(foo('bar'))")
|
|
26
27
|
end
|
|
27
28
|
end
|
|
@@ -29,9 +30,9 @@ describe PgSearch::Normalizer do
|
|
|
29
30
|
|
|
30
31
|
context "when passed a String" do
|
|
31
32
|
it "wraps the expression in unaccent()" do
|
|
32
|
-
config =
|
|
33
|
+
config = instance_double("PgSearch::Configuration", "config", ignore: [:accents])
|
|
33
34
|
|
|
34
|
-
normalizer =
|
|
35
|
+
normalizer = described_class.new(config)
|
|
35
36
|
expect(normalizer.add_normalization("foo")).to eq("unaccent(foo)")
|
|
36
37
|
end
|
|
37
38
|
|
|
@@ -39,9 +40,9 @@ describe PgSearch::Normalizer do
|
|
|
39
40
|
it "wraps the expression in that function" do
|
|
40
41
|
allow(PgSearch).to receive(:unaccent_function).and_return("my_unaccent")
|
|
41
42
|
|
|
42
|
-
config =
|
|
43
|
+
config = instance_double("PgSearch::Configuration", "config", ignore: [:accents])
|
|
43
44
|
|
|
44
|
-
normalizer =
|
|
45
|
+
normalizer = described_class.new(config)
|
|
45
46
|
expect(normalizer.add_normalization("foo")).to eq("my_unaccent(foo)")
|
|
46
47
|
end
|
|
47
48
|
end
|
|
@@ -50,11 +51,12 @@ describe PgSearch::Normalizer do
|
|
|
50
51
|
|
|
51
52
|
context "when config[:ignore] does not include :accents" do
|
|
52
53
|
it "passes the expression through" do
|
|
53
|
-
config =
|
|
54
|
+
config = instance_double("PgSearch::Configuration", "config", ignore: [])
|
|
54
55
|
|
|
55
|
-
normalizer =
|
|
56
|
+
normalizer = described_class.new(config)
|
|
56
57
|
expect(normalizer.add_normalization("foo")).to eq("foo")
|
|
57
58
|
end
|
|
58
59
|
end
|
|
59
60
|
end
|
|
60
61
|
end
|
|
62
|
+
# rubocop:enable RSpec/NestedGroups
|
data/spec/lib/pg_search_spec.rb
CHANGED
|
@@ -2,42 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
require "spec_helper"
|
|
4
4
|
|
|
5
|
-
# For
|
|
5
|
+
# For Active Record 5.x, the association reflection's cache needs be cleared
|
|
6
6
|
# because we're stubbing the related constants.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def clear_searchable_cache
|
|
14
|
-
end
|
|
7
|
+
if ActiveRecord::VERSION::MAJOR == 5
|
|
8
|
+
def clear_searchable_cache
|
|
9
|
+
PgSearch::Document.reflect_on_association(:searchable).clear_association_scope_cache
|
|
10
|
+
end
|
|
11
|
+
else
|
|
12
|
+
def clear_searchable_cache
|
|
15
13
|
end
|
|
16
14
|
end
|
|
17
15
|
|
|
16
|
+
# rubocop:disable RSpec/NestedGroups
|
|
18
17
|
describe PgSearch do
|
|
19
18
|
describe ".multisearch" do
|
|
20
|
-
with_table "pg_search_documents",
|
|
19
|
+
with_table "pg_search_documents", &DOCUMENTS_SCHEMA
|
|
21
20
|
|
|
22
21
|
describe "delegation to PgSearch::Document.search" do
|
|
23
|
-
subject {
|
|
22
|
+
subject { described_class.multisearch(query) }
|
|
23
|
+
|
|
24
|
+
let(:query) { instance_double("String", "query") }
|
|
25
|
+
let(:relation) { instance_double("ActiveRecord::Relation", "relation") }
|
|
24
26
|
|
|
25
|
-
let(:query) { double(:query) }
|
|
26
|
-
let(:relation) { double(:relation) }
|
|
27
27
|
before do
|
|
28
|
-
|
|
28
|
+
allow(PgSearch::Document).to receive(:search).with(query).and_return(relation)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
it { is_expected.to eq(relation) }
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
context "with PgSearch.multisearch_options set to a Hash" do
|
|
35
|
-
before { allow(PgSearch).to receive(:multisearch_options).and_return(using: :dmetaphone) }
|
|
36
35
|
subject do
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
clear_searchable_cache
|
|
37
|
+
described_class.multisearch(query).map(&:searchable)
|
|
39
38
|
end
|
|
40
39
|
|
|
40
|
+
before { allow(described_class).to receive(:multisearch_options).and_return(using: :dmetaphone) }
|
|
41
|
+
|
|
41
42
|
with_model :MultisearchableModel do
|
|
42
43
|
table do |t|
|
|
43
44
|
t.string :title
|
|
@@ -50,17 +51,18 @@ describe PgSearch do
|
|
|
50
51
|
|
|
51
52
|
let!(:soundalike_record) { MultisearchableModel.create!(title: 'foning') }
|
|
52
53
|
let(:query) { "Phoning" }
|
|
54
|
+
|
|
53
55
|
it { is_expected.to include(soundalike_record) }
|
|
54
56
|
end
|
|
55
57
|
|
|
56
58
|
context "with PgSearch.multisearch_options set to a Proc" do
|
|
57
59
|
subject do
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
clear_searchable_cache
|
|
61
|
+
described_class.multisearch(query, soundalike).map(&:searchable)
|
|
60
62
|
end
|
|
61
63
|
|
|
62
64
|
before do
|
|
63
|
-
allow(
|
|
65
|
+
allow(described_class).to receive(:multisearch_options) do
|
|
64
66
|
lambda do |query, soundalike|
|
|
65
67
|
if soundalike
|
|
66
68
|
{ using: :dmetaphone, query: query }
|
|
@@ -86,16 +88,18 @@ describe PgSearch do
|
|
|
86
88
|
|
|
87
89
|
context "with soundalike true" do
|
|
88
90
|
let(:soundalike) { true }
|
|
91
|
+
|
|
89
92
|
it { is_expected.to include(soundalike_record) }
|
|
90
93
|
end
|
|
91
94
|
|
|
92
95
|
context "with soundalike false" do
|
|
93
96
|
let(:soundalike) { false }
|
|
97
|
+
|
|
94
98
|
it { is_expected.not_to include(soundalike_record) }
|
|
95
99
|
end
|
|
96
100
|
end
|
|
97
101
|
|
|
98
|
-
context "on an STI subclass" do
|
|
102
|
+
context "when on an STI subclass" do
|
|
99
103
|
context "with standard type column" do
|
|
100
104
|
with_model :SuperclassModel do
|
|
101
105
|
table do |t|
|
|
@@ -128,7 +132,7 @@ describe PgSearch do
|
|
|
128
132
|
|
|
129
133
|
expect(PgSearch::Document.count).to be 2
|
|
130
134
|
|
|
131
|
-
results =
|
|
135
|
+
results = described_class.multisearch("foo bar")
|
|
132
136
|
|
|
133
137
|
expect(results).to eq [included.pg_search_document]
|
|
134
138
|
end
|
|
@@ -141,11 +145,12 @@ describe PgSearch do
|
|
|
141
145
|
model = SearchableSubclassModel.find(model.id)
|
|
142
146
|
model.content = "foo"
|
|
143
147
|
model.save!
|
|
144
|
-
results =
|
|
148
|
+
results = described_class.multisearch("foo")
|
|
145
149
|
expect(results.size).to eq(SearchableSubclassModel.count)
|
|
146
150
|
end
|
|
147
151
|
|
|
148
|
-
|
|
152
|
+
# rubocop:disable RSpec/MultipleExpectations
|
|
153
|
+
specify "reindexing works" do
|
|
149
154
|
NonSearchableSubclassModel.create!(content: "foo bar")
|
|
150
155
|
NonSearchableSubclassModel.create!(content: "baz")
|
|
151
156
|
expected = SearchableSubclassModel.create!(content: "baz")
|
|
@@ -161,11 +166,12 @@ describe PgSearch do
|
|
|
161
166
|
|
|
162
167
|
PgSearch::Multisearch.rebuild(SearchableSubclassModel)
|
|
163
168
|
|
|
164
|
-
|
|
169
|
+
clear_searchable_cache
|
|
165
170
|
expect(PgSearch::Document.count).to be 1
|
|
166
171
|
expect(PgSearch::Document.first.searchable.class).to be SearchableSubclassModel
|
|
167
172
|
expect(PgSearch::Document.first.searchable).to eq expected
|
|
168
173
|
end
|
|
174
|
+
# rubocop:enable RSpec/MultipleExpectations
|
|
169
175
|
|
|
170
176
|
it "reindexing searchable STI doesn't clobber other related STI models" do
|
|
171
177
|
SearchableSubclassModel.create!(content: "baz")
|
|
@@ -175,7 +181,7 @@ describe PgSearch do
|
|
|
175
181
|
PgSearch::Multisearch.rebuild(SearchableSubclassModel)
|
|
176
182
|
expect(PgSearch::Document.count).to be 2
|
|
177
183
|
|
|
178
|
-
|
|
184
|
+
clear_searchable_cache
|
|
179
185
|
classes = PgSearch::Document.all.collect { |d| d.searchable.class }
|
|
180
186
|
expect(classes).to include SearchableSubclassModel
|
|
181
187
|
expect(classes).to include AnotherSearchableSubclassModel
|
|
@@ -218,7 +224,7 @@ describe PgSearch do
|
|
|
218
224
|
|
|
219
225
|
expect(PgSearch::Document.count).to be 2
|
|
220
226
|
|
|
221
|
-
results =
|
|
227
|
+
results = described_class.multisearch("foo bar")
|
|
222
228
|
|
|
223
229
|
expect(results).to eq [included.pg_search_document]
|
|
224
230
|
end
|
|
@@ -227,57 +233,62 @@ describe PgSearch do
|
|
|
227
233
|
end
|
|
228
234
|
|
|
229
235
|
describe ".disable_multisearch" do
|
|
230
|
-
it "
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
236
|
+
it "disables multisearch temporarily" do
|
|
237
|
+
multisearch_enabled_before = described_class.multisearch_enabled?
|
|
238
|
+
multisearch_enabled_inside = nil
|
|
239
|
+
described_class.disable_multisearch do
|
|
240
|
+
multisearch_enabled_inside = described_class.multisearch_enabled?
|
|
234
241
|
end
|
|
235
|
-
|
|
242
|
+
multisearch_enabled_after = described_class.multisearch_enabled?
|
|
236
243
|
|
|
237
|
-
expect(
|
|
238
|
-
expect(
|
|
239
|
-
expect(
|
|
244
|
+
expect(multisearch_enabled_before).to be(true)
|
|
245
|
+
expect(multisearch_enabled_inside).to be(false)
|
|
246
|
+
expect(multisearch_enabled_after).to be(true)
|
|
240
247
|
end
|
|
241
248
|
|
|
242
|
-
it "
|
|
243
|
-
|
|
249
|
+
it "reenables multisearch after an error" do
|
|
250
|
+
multisearch_enabled_before = described_class.multisearch_enabled?
|
|
251
|
+
multisearch_enabled_inside = nil
|
|
244
252
|
begin
|
|
245
|
-
|
|
246
|
-
|
|
253
|
+
described_class.disable_multisearch do
|
|
254
|
+
multisearch_enabled_inside = described_class.multisearch_enabled?
|
|
247
255
|
raise
|
|
248
256
|
end
|
|
249
257
|
rescue StandardError
|
|
250
258
|
end
|
|
259
|
+
multisearch_enabled_after = described_class.multisearch_enabled?
|
|
251
260
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
expect(
|
|
255
|
-
expect(@multisearch_enabled_inside).to be(false)
|
|
256
|
-
expect(@multisearch_enabled_after).to be(true)
|
|
261
|
+
expect(multisearch_enabled_before).to be(true)
|
|
262
|
+
expect(multisearch_enabled_inside).to be(false)
|
|
263
|
+
expect(multisearch_enabled_after).to be(true)
|
|
257
264
|
end
|
|
258
265
|
|
|
259
|
-
|
|
266
|
+
# rubocop:disable RSpec/ExampleLength
|
|
267
|
+
it "does not disable multisearch on other threads" do
|
|
260
268
|
values = Queue.new
|
|
261
269
|
sync = Queue.new
|
|
262
270
|
Thread.new do
|
|
263
|
-
values.push
|
|
271
|
+
values.push described_class.multisearch_enabled?
|
|
264
272
|
sync.pop # wait
|
|
265
|
-
values.push
|
|
273
|
+
values.push described_class.multisearch_enabled?
|
|
266
274
|
sync.pop # wait
|
|
267
|
-
values.push
|
|
275
|
+
values.push described_class.multisearch_enabled?
|
|
268
276
|
end
|
|
269
277
|
|
|
270
|
-
|
|
271
|
-
|
|
278
|
+
multisearch_enabled_before = values.pop
|
|
279
|
+
multisearch_enabled_inside = nil
|
|
280
|
+
described_class.disable_multisearch do
|
|
272
281
|
sync.push :go
|
|
273
|
-
|
|
282
|
+
multisearch_enabled_inside = values.pop
|
|
274
283
|
end
|
|
275
284
|
sync.push :go
|
|
276
|
-
|
|
285
|
+
multisearch_enabled_after = values.pop
|
|
277
286
|
|
|
278
|
-
expect(
|
|
279
|
-
expect(
|
|
280
|
-
expect(
|
|
287
|
+
expect(multisearch_enabled_before).to be(true)
|
|
288
|
+
expect(multisearch_enabled_inside).to be(true)
|
|
289
|
+
expect(multisearch_enabled_after).to be(true)
|
|
281
290
|
end
|
|
291
|
+
# rubocop:enable RSpec/ExampleLength
|
|
282
292
|
end
|
|
283
293
|
end
|
|
294
|
+
# rubocop:enable RSpec/NestedGroups
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,18 +1,32 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'warning'
|
|
4
|
+
# Ignore Ruby 2.7 warnings from Active Record
|
|
5
|
+
Warning.ignore :keyword_separation
|
|
6
|
+
|
|
7
|
+
# https://github.com/grodowski/undercover#setting-up-required-lcov-reporting
|
|
3
8
|
require 'simplecov'
|
|
4
|
-
|
|
9
|
+
require 'simplecov-lcov'
|
|
10
|
+
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
|
|
11
|
+
SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
|
|
12
|
+
SimpleCov.start do
|
|
13
|
+
add_filter(%r{^/spec/})
|
|
14
|
+
enable_coverage(:branch)
|
|
15
|
+
end
|
|
16
|
+
require 'undercover'
|
|
5
17
|
|
|
6
18
|
require "bundler/setup"
|
|
7
19
|
require "pg_search"
|
|
8
20
|
|
|
9
21
|
RSpec.configure do |config|
|
|
10
|
-
config.expect_with :rspec do |
|
|
11
|
-
|
|
22
|
+
config.expect_with :rspec do |expects|
|
|
23
|
+
expects.syntax = :expect
|
|
12
24
|
end
|
|
13
25
|
|
|
14
|
-
config.mock_with :rspec do |
|
|
15
|
-
|
|
26
|
+
config.mock_with :rspec do |mocks|
|
|
27
|
+
mocks.syntax = :expect
|
|
28
|
+
mocks.verify_doubled_constant_names = true
|
|
29
|
+
mocks.verify_partial_doubles = true
|
|
16
30
|
end
|
|
17
31
|
|
|
18
32
|
config.example_status_persistence_file_path = 'tmp/examples.txt'
|
|
@@ -25,4 +39,7 @@ DOCUMENTS_SCHEMA = lambda do |t|
|
|
|
25
39
|
t.belongs_to :searchable, polymorphic: true, index: true
|
|
26
40
|
t.text :content
|
|
27
41
|
t.timestamps null: false
|
|
42
|
+
|
|
43
|
+
# Used to test additional_attributes setup
|
|
44
|
+
t.text :additional_attribute_column
|
|
28
45
|
end
|
data/spec/support/database.rb
CHANGED
|
@@ -10,10 +10,12 @@ else
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
begin
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
connection_options = { adapter: 'postgresql', database: 'pg_search_test', min_messages: 'warning' }
|
|
14
|
+
if ENV["CI"]
|
|
15
|
+
connection_options[:username] = 'postgres'
|
|
16
|
+
connection_options[:password] = 'postgres'
|
|
17
|
+
end
|
|
18
|
+
ActiveRecord::Base.establish_connection(connection_options)
|
|
17
19
|
connection = ActiveRecord::Base.connection
|
|
18
20
|
connection.execute("SELECT 1")
|
|
19
21
|
rescue ERROR_CLASS, ActiveRecord::NoDatabaseError => e
|
|
@@ -29,7 +31,7 @@ end
|
|
|
29
31
|
|
|
30
32
|
if ENV["LOGGER"]
|
|
31
33
|
require "logger"
|
|
32
|
-
ActiveRecord::Base.logger = Logger.new(
|
|
34
|
+
ActiveRecord::Base.logger = Logger.new($stdout)
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
def install_extension(name)
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pg_search
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.3.
|
|
4
|
+
version: 2.3.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Grant Hutchins
|
|
8
8
|
- Case Commons, LLC
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activerecord
|
|
@@ -17,28 +17,28 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - ">="
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: '
|
|
20
|
+
version: '5.2'
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - ">="
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: '
|
|
27
|
+
version: '5.2'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: activesupport
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - ">="
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: '
|
|
34
|
+
version: '5.2'
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - ">="
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: '
|
|
41
|
+
version: '5.2'
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: pry
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -73,28 +73,28 @@ dependencies:
|
|
|
73
73
|
requirements:
|
|
74
74
|
- - ">="
|
|
75
75
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: '
|
|
76
|
+
version: '0'
|
|
77
77
|
type: :development
|
|
78
78
|
prerelease: false
|
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
80
|
requirements:
|
|
81
81
|
- - ">="
|
|
82
82
|
- !ruby/object:Gem::Version
|
|
83
|
-
version: '
|
|
83
|
+
version: '0'
|
|
84
84
|
- !ruby/object:Gem::Dependency
|
|
85
85
|
name: rubocop
|
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
|
87
87
|
requirements:
|
|
88
88
|
- - ">="
|
|
89
89
|
- !ruby/object:Gem::Version
|
|
90
|
-
version: 0
|
|
90
|
+
version: '0'
|
|
91
91
|
type: :development
|
|
92
92
|
prerelease: false
|
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
94
94
|
requirements:
|
|
95
95
|
- - ">="
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
|
-
version: 0
|
|
97
|
+
version: '0'
|
|
98
98
|
- !ruby/object:Gem::Dependency
|
|
99
99
|
name: rubocop-performance
|
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -109,6 +109,48 @@ dependencies:
|
|
|
109
109
|
- - ">="
|
|
110
110
|
- !ruby/object:Gem::Version
|
|
111
111
|
version: '0'
|
|
112
|
+
- !ruby/object:Gem::Dependency
|
|
113
|
+
name: rubocop-rails
|
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
|
115
|
+
requirements:
|
|
116
|
+
- - ">="
|
|
117
|
+
- !ruby/object:Gem::Version
|
|
118
|
+
version: '0'
|
|
119
|
+
type: :development
|
|
120
|
+
prerelease: false
|
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
122
|
+
requirements:
|
|
123
|
+
- - ">="
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
version: '0'
|
|
126
|
+
- !ruby/object:Gem::Dependency
|
|
127
|
+
name: rubocop-rake
|
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
|
129
|
+
requirements:
|
|
130
|
+
- - ">="
|
|
131
|
+
- !ruby/object:Gem::Version
|
|
132
|
+
version: '0'
|
|
133
|
+
type: :development
|
|
134
|
+
prerelease: false
|
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
136
|
+
requirements:
|
|
137
|
+
- - ">="
|
|
138
|
+
- !ruby/object:Gem::Version
|
|
139
|
+
version: '0'
|
|
140
|
+
- !ruby/object:Gem::Dependency
|
|
141
|
+
name: rubocop-rspec
|
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
|
143
|
+
requirements:
|
|
144
|
+
- - ">="
|
|
145
|
+
- !ruby/object:Gem::Version
|
|
146
|
+
version: '0'
|
|
147
|
+
type: :development
|
|
148
|
+
prerelease: false
|
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
150
|
+
requirements:
|
|
151
|
+
- - ">="
|
|
152
|
+
- !ruby/object:Gem::Version
|
|
153
|
+
version: '0'
|
|
112
154
|
- !ruby/object:Gem::Dependency
|
|
113
155
|
name: simplecov
|
|
114
156
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -123,20 +165,62 @@ dependencies:
|
|
|
123
165
|
- - ">="
|
|
124
166
|
- !ruby/object:Gem::Version
|
|
125
167
|
version: '0'
|
|
168
|
+
- !ruby/object:Gem::Dependency
|
|
169
|
+
name: simplecov-lcov
|
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
|
171
|
+
requirements:
|
|
172
|
+
- - ">="
|
|
173
|
+
- !ruby/object:Gem::Version
|
|
174
|
+
version: '0'
|
|
175
|
+
type: :development
|
|
176
|
+
prerelease: false
|
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
178
|
+
requirements:
|
|
179
|
+
- - ">="
|
|
180
|
+
- !ruby/object:Gem::Version
|
|
181
|
+
version: '0'
|
|
182
|
+
- !ruby/object:Gem::Dependency
|
|
183
|
+
name: undercover
|
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
|
185
|
+
requirements:
|
|
186
|
+
- - ">="
|
|
187
|
+
- !ruby/object:Gem::Version
|
|
188
|
+
version: '0'
|
|
189
|
+
type: :development
|
|
190
|
+
prerelease: false
|
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
192
|
+
requirements:
|
|
193
|
+
- - ">="
|
|
194
|
+
- !ruby/object:Gem::Version
|
|
195
|
+
version: '0'
|
|
196
|
+
- !ruby/object:Gem::Dependency
|
|
197
|
+
name: warning
|
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
|
199
|
+
requirements:
|
|
200
|
+
- - ">="
|
|
201
|
+
- !ruby/object:Gem::Version
|
|
202
|
+
version: '0'
|
|
203
|
+
type: :development
|
|
204
|
+
prerelease: false
|
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
206
|
+
requirements:
|
|
207
|
+
- - ">="
|
|
208
|
+
- !ruby/object:Gem::Version
|
|
209
|
+
version: '0'
|
|
126
210
|
- !ruby/object:Gem::Dependency
|
|
127
211
|
name: with_model
|
|
128
212
|
requirement: !ruby/object:Gem::Requirement
|
|
129
213
|
requirements:
|
|
130
214
|
- - ">="
|
|
131
215
|
- !ruby/object:Gem::Version
|
|
132
|
-
version: '
|
|
216
|
+
version: '0'
|
|
133
217
|
type: :development
|
|
134
218
|
prerelease: false
|
|
135
219
|
version_requirements: !ruby/object:Gem::Requirement
|
|
136
220
|
requirements:
|
|
137
221
|
- - ">="
|
|
138
222
|
- !ruby/object:Gem::Version
|
|
139
|
-
version: '
|
|
223
|
+
version: '0'
|
|
140
224
|
description: PgSearch builds Active Record named scopes that take advantage of PostgreSQL's
|
|
141
225
|
full text search
|
|
142
226
|
email:
|
|
@@ -146,15 +230,18 @@ executables: []
|
|
|
146
230
|
extensions: []
|
|
147
231
|
extra_rdoc_files: []
|
|
148
232
|
files:
|
|
149
|
-
- ".autotest"
|
|
150
233
|
- ".bundle/config"
|
|
151
234
|
- ".codeclimate.yml"
|
|
152
235
|
- ".editorconfig"
|
|
236
|
+
- ".github/dependabot.yml"
|
|
237
|
+
- ".github/workflows/ci.yml"
|
|
153
238
|
- ".gitignore"
|
|
239
|
+
- ".jrubyrc"
|
|
154
240
|
- ".rspec"
|
|
155
241
|
- ".rubocop.yml"
|
|
156
242
|
- ".travis.yml"
|
|
157
243
|
- CHANGELOG.md
|
|
244
|
+
- CODE_OF_CONDUCT.md
|
|
158
245
|
- CONTRIBUTING.md
|
|
159
246
|
- Gemfile
|
|
160
247
|
- LICENSE
|
|
@@ -187,6 +274,7 @@ files:
|
|
|
187
274
|
- lib/pg_search/version.rb
|
|
188
275
|
- pg_search.gemspec
|
|
189
276
|
- spec/.rubocop.yml
|
|
277
|
+
- spec/integration/.rubocop.yml
|
|
190
278
|
- spec/integration/associations_spec.rb
|
|
191
279
|
- spec/integration/deprecation_spec.rb
|
|
192
280
|
- spec/integration/pagination_spec.rb
|
|
@@ -211,8 +299,9 @@ files:
|
|
|
211
299
|
homepage: https://github.com/Casecommons/pg_search
|
|
212
300
|
licenses:
|
|
213
301
|
- MIT
|
|
214
|
-
metadata:
|
|
215
|
-
|
|
302
|
+
metadata:
|
|
303
|
+
rubygems_mfa_required: 'true'
|
|
304
|
+
post_install_message:
|
|
216
305
|
rdoc_options: []
|
|
217
306
|
require_paths:
|
|
218
307
|
- lib
|
|
@@ -220,19 +309,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
220
309
|
requirements:
|
|
221
310
|
- - ">="
|
|
222
311
|
- !ruby/object:Gem::Version
|
|
223
|
-
version: '2.
|
|
312
|
+
version: '2.6'
|
|
224
313
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
314
|
requirements:
|
|
226
315
|
- - ">="
|
|
227
316
|
- !ruby/object:Gem::Version
|
|
228
317
|
version: '0'
|
|
229
318
|
requirements: []
|
|
230
|
-
rubygems_version: 3.
|
|
231
|
-
signing_key:
|
|
319
|
+
rubygems_version: 3.3.3
|
|
320
|
+
signing_key:
|
|
232
321
|
specification_version: 4
|
|
233
322
|
summary: PgSearch builds Active Record named scopes that take advantage of PostgreSQL's
|
|
234
323
|
full text search
|
|
235
324
|
test_files:
|
|
325
|
+
- spec/integration/.rubocop.yml
|
|
236
326
|
- spec/integration/associations_spec.rb
|
|
237
327
|
- spec/integration/deprecation_spec.rb
|
|
238
328
|
- spec/integration/pagination_spec.rb
|