pg_search 2.1.4 → 2.1.5

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -4
  3. data/.travis.yml +27 -25
  4. data/CHANGELOG.md +4 -0
  5. data/Gemfile +4 -4
  6. data/README.md +184 -151
  7. data/Rakefile +1 -5
  8. data/lib/pg_search.rb +1 -1
  9. data/lib/pg_search/configuration.rb +2 -2
  10. data/lib/pg_search/document.rb +3 -3
  11. data/lib/pg_search/features/dmetaphone.rb +1 -1
  12. data/lib/pg_search/features/feature.rb +1 -1
  13. data/lib/pg_search/migration/templates/create_pg_search_documents.rb.erb +1 -1
  14. data/lib/pg_search/multisearch.rb +1 -1
  15. data/lib/pg_search/multisearchable.rb +4 -4
  16. data/lib/pg_search/scope_options.rb +13 -28
  17. data/lib/pg_search/version.rb +1 -1
  18. data/pg_search.gemspec +1 -2
  19. data/spec/integration/associations_spec.rb +100 -100
  20. data/spec/integration/pagination_spec.rb +7 -7
  21. data/spec/integration/pg_search_spec.rb +225 -225
  22. data/spec/integration/single_table_inheritance_spec.rb +14 -14
  23. data/spec/lib/pg_search/configuration/association_spec.rb +5 -5
  24. data/spec/lib/pg_search/configuration/foreign_column_spec.rb +1 -1
  25. data/spec/lib/pg_search/features/dmetaphone_spec.rb +2 -2
  26. data/spec/lib/pg_search/features/trigram_spec.rb +1 -1
  27. data/spec/lib/pg_search/features/tsearch_spec.rb +12 -12
  28. data/spec/lib/pg_search/multisearch/rebuilder_spec.rb +10 -10
  29. data/spec/lib/pg_search/multisearch_spec.rb +5 -5
  30. data/spec/lib/pg_search/multisearchable_spec.rb +26 -26
  31. data/spec/lib/pg_search/normalizer_spec.rb +5 -5
  32. data/spec/lib/pg_search_spec.rb +30 -30
  33. data/spec/spec_helper.rb +1 -1
  34. data/spec/support/database.rb +12 -19
  35. metadata +4 -18
@@ -7,7 +7,7 @@ describe PgSearch::Normalizer do
7
7
  context "when config[:ignore] includes :accents" do
8
8
  context "when passed an Arel node" do
9
9
  it "wraps the expression in unaccent()" do
10
- config = double("config", :ignore => [:accents])
10
+ config = double("config", ignore: [:accents])
11
11
  node = Arel::Nodes::NamedFunction.new("foo", [Arel::Nodes.build_quoted("bar")])
12
12
 
13
13
  normalizer = PgSearch::Normalizer.new(config)
@@ -19,7 +19,7 @@ describe PgSearch::Normalizer do
19
19
  allow(PgSearch).to receive(:unaccent_function).and_return("my_unaccent")
20
20
  node = Arel::Nodes::NamedFunction.new("foo", [Arel::Nodes.build_quoted("bar")])
21
21
 
22
- config = double("config", :ignore => [:accents])
22
+ config = double("config", ignore: [:accents])
23
23
 
24
24
  normalizer = PgSearch::Normalizer.new(config)
25
25
  expect(normalizer.add_normalization(node)).to eq("my_unaccent(foo('bar'))")
@@ -29,7 +29,7 @@ describe PgSearch::Normalizer do
29
29
 
30
30
  context "when passed a String" do
31
31
  it "wraps the expression in unaccent()" do
32
- config = double("config", :ignore => [:accents])
32
+ config = double("config", ignore: [:accents])
33
33
 
34
34
  normalizer = PgSearch::Normalizer.new(config)
35
35
  expect(normalizer.add_normalization("foo")).to eq("unaccent(foo)")
@@ -39,7 +39,7 @@ describe PgSearch::Normalizer do
39
39
  it "wraps the expression in that function" do
40
40
  allow(PgSearch).to receive(:unaccent_function).and_return("my_unaccent")
41
41
 
42
- config = double("config", :ignore => [:accents])
42
+ config = double("config", ignore: [:accents])
43
43
 
44
44
  normalizer = PgSearch::Normalizer.new(config)
45
45
  expect(normalizer.add_normalization("foo")).to eq("my_unaccent(foo)")
@@ -50,7 +50,7 @@ describe PgSearch::Normalizer do
50
50
 
51
51
  context "when config[:ignore] does not include :accents" do
52
52
  it "passes the expression through" do
53
- config = double("config", :ignore => [])
53
+ config = double("config", ignore: [])
54
54
 
55
55
  normalizer = PgSearch::Normalizer.new(config)
56
56
  expect(normalizer.add_normalization("foo")).to eq("foo")
@@ -32,7 +32,7 @@ describe PgSearch do
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) }
35
+ before { allow(PgSearch).to receive(:multisearch_options).and_return(using: :dmetaphone) }
36
36
  subject do
37
37
  PgSearch::Document.clear_searchable_cache
38
38
  PgSearch.multisearch(query).map(&:searchable)
@@ -44,11 +44,11 @@ describe PgSearch do
44
44
  end
45
45
  model do
46
46
  include PgSearch
47
- multisearchable :against => :title
47
+ multisearchable against: :title
48
48
  end
49
49
  end
50
50
 
51
- let!(:soundalike_record) { MultisearchableModel.create!(:title => 'foning') }
51
+ let!(:soundalike_record) { MultisearchableModel.create!(title: 'foning') }
52
52
  let(:query) { "Phoning" }
53
53
  it { is_expected.to include(soundalike_record) }
54
54
  end
@@ -63,9 +63,9 @@ describe PgSearch do
63
63
  allow(PgSearch).to receive(:multisearch_options) do
64
64
  lambda do |query, soundalike|
65
65
  if soundalike
66
- { :using => :dmetaphone, :query => query }
66
+ { using: :dmetaphone, query: query }
67
67
  else
68
- { :query => query }
68
+ { query: query }
69
69
  end
70
70
  end
71
71
  end
@@ -77,11 +77,11 @@ describe PgSearch do
77
77
  end
78
78
  model do
79
79
  include PgSearch
80
- multisearchable :against => :title
80
+ multisearchable against: :title
81
81
  end
82
82
  end
83
83
 
84
- let!(:soundalike_record) { MultisearchableModel.create!(:title => 'foning') }
84
+ let!(:soundalike_record) { MultisearchableModel.create!(title: 'foning') }
85
85
  let(:query) { "Phoning" }
86
86
 
87
87
  context "with soundalike true" do
@@ -107,7 +107,7 @@ describe PgSearch do
107
107
  before do
108
108
  searchable_subclass_model = Class.new(SuperclassModel) do
109
109
  include PgSearch
110
- multisearchable :against => :content
110
+ multisearchable against: :content
111
111
  end
112
112
  stub_const("SearchableSubclassModel", searchable_subclass_model)
113
113
  stub_const("AnotherSearchableSubclassModel", searchable_subclass_model)
@@ -115,13 +115,13 @@ describe PgSearch do
115
115
  end
116
116
 
117
117
  it "returns only results for that subclass" do
118
- included = SearchableSubclassModel.create!(:content => "foo bar")
118
+ included = SearchableSubclassModel.create!(content: "foo bar")
119
119
 
120
- SearchableSubclassModel.create!(:content => "baz")
121
- SuperclassModel.create!(:content => "foo bar")
122
- SuperclassModel.create!(:content => "baz")
123
- NonSearchableSubclassModel.create!(:content => "foo bar")
124
- NonSearchableSubclassModel.create!(:content => "baz")
120
+ SearchableSubclassModel.create!(content: "baz")
121
+ SuperclassModel.create!(content: "foo bar")
122
+ SuperclassModel.create!(content: "baz")
123
+ NonSearchableSubclassModel.create!(content: "foo bar")
124
+ NonSearchableSubclassModel.create!(content: "baz")
125
125
 
126
126
  expect(SuperclassModel.count).to be 6
127
127
  expect(SearchableSubclassModel.count).to be 2
@@ -134,7 +134,7 @@ describe PgSearch do
134
134
  end
135
135
 
136
136
  it "updates an existing STI model does not create a new pg_search document" do
137
- model = SearchableSubclassModel.create!(:content => "foo bar")
137
+ model = SearchableSubclassModel.create!(content: "foo bar")
138
138
  expect(SearchableSubclassModel.count).to eq(1)
139
139
  # We fetch the model from the database again otherwise
140
140
  # the pg_search_document from the cache is used.
@@ -146,12 +146,12 @@ describe PgSearch do
146
146
  end
147
147
 
148
148
  it "reindexing works" do
149
- NonSearchableSubclassModel.create!(:content => "foo bar")
150
- NonSearchableSubclassModel.create!(:content => "baz")
151
- expected = SearchableSubclassModel.create!(:content => "baz")
152
- SuperclassModel.create!(:content => "foo bar")
153
- SuperclassModel.create!(:content => "baz")
154
- SuperclassModel.create!(:content => "baz2")
149
+ NonSearchableSubclassModel.create!(content: "foo bar")
150
+ NonSearchableSubclassModel.create!(content: "baz")
151
+ expected = SearchableSubclassModel.create!(content: "baz")
152
+ SuperclassModel.create!(content: "foo bar")
153
+ SuperclassModel.create!(content: "baz")
154
+ SuperclassModel.create!(content: "baz2")
155
155
 
156
156
  expect(SuperclassModel.count).to be 6
157
157
  expect(NonSearchableSubclassModel.count).to be 2
@@ -168,8 +168,8 @@ describe PgSearch do
168
168
  end
169
169
 
170
170
  it "reindexing searchable STI doesn't clobber other related STI models" do
171
- SearchableSubclassModel.create!(:content => "baz")
172
- AnotherSearchableSubclassModel.create!(:content => "baz")
171
+ SearchableSubclassModel.create!(content: "baz")
172
+ AnotherSearchableSubclassModel.create!(content: "baz")
173
173
 
174
174
  expect(PgSearch::Document.count).to be 2
175
175
  PgSearch::Multisearch.rebuild(SearchableSubclassModel)
@@ -197,7 +197,7 @@ describe PgSearch do
197
197
  before do
198
198
  searchable_subclass_model = Class.new(SuperclassModel) do
199
199
  include PgSearch
200
- multisearchable :against => :content
200
+ multisearchable against: :content
201
201
  end
202
202
  stub_const("SearchableSubclassModel", searchable_subclass_model)
203
203
  stub_const("AnotherSearchableSubclassModel", searchable_subclass_model)
@@ -205,13 +205,13 @@ describe PgSearch do
205
205
  end
206
206
 
207
207
  it "returns only results for that subclass" do
208
- included = SearchableSubclassModel.create!(:content => "foo bar")
208
+ included = SearchableSubclassModel.create!(content: "foo bar")
209
209
 
210
- SearchableSubclassModel.create!(:content => "baz")
211
- SuperclassModel.create!(:content => "foo bar")
212
- SuperclassModel.create!(:content => "baz")
213
- NonSearchableSubclassModel.create!(:content => "foo bar")
214
- NonSearchableSubclassModel.create!(:content => "baz")
210
+ SearchableSubclassModel.create!(content: "baz")
211
+ SuperclassModel.create!(content: "foo bar")
212
+ SuperclassModel.create!(content: "baz")
213
+ NonSearchableSubclassModel.create!(content: "foo bar")
214
+ NonSearchableSubclassModel.create!(content: "baz")
215
215
 
216
216
  expect(SuperclassModel.count).to be 6
217
217
  expect(SearchableSubclassModel.count).to be 2
@@ -22,7 +22,7 @@ require 'support/database'
22
22
  require 'support/with_model'
23
23
 
24
24
  DOCUMENTS_SCHEMA = lambda do |t|
25
- t.belongs_to :searchable, :polymorphic => true, :index => true
25
+ t.belongs_to :searchable, polymorphic: true, index: true
26
26
  t.text :content
27
27
  t.timestamps null: false
28
28
  end
@@ -1,29 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if defined? JRUBY_VERSION
3
+ case RUBY_PLATFORM
4
+ when "java"
4
5
  require "activerecord-jdbc-adapter"
5
- error_classes = [ActiveRecord::JDBCError]
6
+ ERROR_CLASS = ActiveRecord::JDBCError
6
7
  else
7
8
  require "pg"
8
- error_classes = [PG::Error]
9
+ ERROR_CLASS = PG::Error
9
10
  end
10
11
 
11
- error_classes << ActiveRecord::NoDatabaseError if defined? ActiveRecord::NoDatabaseError
12
-
13
12
  begin
14
- database_user = if ENV["TRAVIS"]
15
- "postgres"
16
- else
17
- ENV["USER"]
18
- end
19
-
20
- ActiveRecord::Base.establish_connection(:adapter => 'postgresql',
21
- :database => 'pg_search_test',
22
- :username => database_user,
23
- :min_messages => 'warning')
13
+ ActiveRecord::Base.establish_connection(adapter: 'postgresql',
14
+ database: 'pg_search_test',
15
+ username: (ENV["TRAVIS"] ? "postgres" : ENV["USER"]),
16
+ min_messages: 'warning')
24
17
  connection = ActiveRecord::Base.connection
25
18
  connection.execute("SELECT 1")
26
- rescue *error_classes => exception
19
+ rescue ERROR_CLASS, ActiveRecord::NoDatabaseError => e
27
20
  at_exit do
28
21
  puts "-" * 80
29
22
  puts "Unable to connect to database. Please run:"
@@ -31,7 +24,7 @@ rescue *error_classes => exception
31
24
  puts " createdb pg_search_test"
32
25
  puts "-" * 80
33
26
  end
34
- raise exception
27
+ raise e
35
28
  end
36
29
 
37
30
  if ENV["LOGGER"]
@@ -45,13 +38,13 @@ def install_extension(name)
45
38
  return unless extension.none?
46
39
 
47
40
  connection.execute "CREATE EXTENSION #{name};"
48
- rescue StandardError => exception
41
+ rescue StandardError => e
49
42
  at_exit do
50
43
  puts "-" * 80
51
44
  puts "Please install the #{name} extension"
52
45
  puts "-" * 80
53
46
  end
54
- raise exception
47
+ raise e
55
48
  end
56
49
 
57
50
  def install_extension_if_missing(name, query, expected_result)
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.1.4
4
+ version: 2.1.5
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-01-26 00:00:00.000000000 Z
12
+ date: 2019-04-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -39,20 +39,6 @@ dependencies:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '4.2'
42
- - !ruby/object:Gem::Dependency
43
- name: codeclimate-test-reporter
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
42
  - !ruby/object:Gem::Dependency
57
43
  name: pry
58
44
  requirement: !ruby/object:Gem::Requirement
@@ -217,14 +203,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
203
  requirements:
218
204
  - - ">="
219
205
  - !ruby/object:Gem::Version
220
- version: '2.3'
206
+ version: '2.4'
221
207
  required_rubygems_version: !ruby/object:Gem::Requirement
222
208
  requirements:
223
209
  - - ">="
224
210
  - !ruby/object:Gem::Version
225
211
  version: '0'
226
212
  requirements: []
227
- rubygems_version: 3.0.1
213
+ rubygems_version: 3.0.3
228
214
  signing_key:
229
215
  specification_version: 4
230
216
  summary: PgSearch builds Active Record named scopes that take advantage of PostgreSQL's