redi_search 1.0.4 → 3.0.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/lint.yml +18 -0
  3. data/.github/workflows/tests.yml +45 -0
  4. data/.rubocop.yml +136 -193
  5. data/Appraisals +6 -6
  6. data/Gemfile +4 -4
  7. data/README.md +79 -92
  8. data/Rakefile +15 -3
  9. data/bin/console +29 -0
  10. data/gemfiles/{rails_51.gemfile → activerecord_51.gemfile} +3 -4
  11. data/gemfiles/{rails_52.gemfile → activerecord_52.gemfile} +3 -4
  12. data/gemfiles/{rails_6.gemfile → activerecord_61.gemfile} +3 -4
  13. data/lib/redi_search.rb +8 -7
  14. data/lib/redi_search/{alter.rb → add_field.rb} +13 -5
  15. data/lib/redi_search/client.rb +23 -11
  16. data/lib/redi_search/client/response.rb +5 -1
  17. data/lib/redi_search/configuration.rb +1 -11
  18. data/lib/redi_search/create.rb +7 -4
  19. data/lib/redi_search/document.rb +5 -13
  20. data/lib/redi_search/document/display.rb +9 -9
  21. data/lib/redi_search/document/finder.rb +12 -42
  22. data/lib/redi_search/hset.rb +28 -0
  23. data/lib/redi_search/index.rb +24 -22
  24. data/lib/redi_search/lazily_load.rb +6 -11
  25. data/lib/redi_search/log_subscriber.rb +25 -53
  26. data/lib/redi_search/model.rb +37 -39
  27. data/lib/redi_search/schema.rb +3 -3
  28. data/lib/redi_search/schema/field.rb +2 -3
  29. data/lib/redi_search/schema/tag_field.rb +1 -1
  30. data/lib/redi_search/schema/text_field.rb +1 -1
  31. data/lib/redi_search/search.rb +15 -25
  32. data/lib/redi_search/search/clauses.rb +6 -7
  33. data/lib/redi_search/search/clauses/application_clause.rb +20 -5
  34. data/lib/redi_search/search/clauses/boolean.rb +9 -9
  35. data/lib/redi_search/search/clauses/highlight.rb +18 -2
  36. data/lib/redi_search/search/clauses/limit.rb +7 -5
  37. data/lib/redi_search/search/clauses/or.rb +1 -1
  38. data/lib/redi_search/search/clauses/return.rb +1 -1
  39. data/lib/redi_search/search/clauses/slop.rb +1 -1
  40. data/lib/redi_search/search/clauses/sort_by.rb +1 -1
  41. data/lib/redi_search/search/clauses/where.rb +10 -2
  42. data/lib/redi_search/search/result.rb +10 -10
  43. data/lib/redi_search/search/term.rb +7 -6
  44. data/lib/redi_search/spellcheck.rb +3 -4
  45. data/lib/redi_search/spellcheck/result.rb +1 -1
  46. data/lib/redi_search/validatable.rb +49 -0
  47. data/lib/redi_search/validations/inclusion.rb +26 -0
  48. data/lib/redi_search/validations/numericality.rb +45 -0
  49. data/lib/redi_search/validations/presence.rb +29 -0
  50. data/lib/redi_search/version.rb +1 -1
  51. data/redi_search.gemspec +1 -3
  52. metadata +20 -50
  53. data/.travis.yml +0 -31
  54. data/bin/test +0 -7
  55. data/lib/redi_search/add.rb +0 -63
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RediSearch
4
+ module Validations
5
+ class Presence
6
+ def initialize(field:)
7
+ @field = field
8
+ end
9
+
10
+ def validate!(object)
11
+ return true if value_present?(object.send(field))
12
+
13
+ raise RediSearch::ValidationError, "#{field} can't be blank"
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :field
19
+
20
+ def value_present?(value)
21
+ if value.respond_to?(:empty?)
22
+ !value.empty?
23
+ else
24
+ value
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RediSearch
4
- VERSION = "1.0.4"
4
+ VERSION = "3.0.0"
5
5
  end
@@ -26,12 +26,10 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.required_ruby_version = ">= 2.5.0"
28
28
 
29
- spec.add_runtime_dependency "activemodel", ">= 5.1", "< 6.1"
30
29
  spec.add_runtime_dependency "activesupport", ">= 5.1", "< 6.1"
31
30
  spec.add_runtime_dependency "redis", ">= 4.0", "< 5.0"
32
31
 
33
- spec.add_development_dependency "appraisal", "~> 2.2"
34
32
  spec.add_development_dependency "bundler", ">= 1.17", "< 3"
35
33
  spec.add_development_dependency "minitest", "~> 5.0"
36
- spec.add_development_dependency "rake", "~> 12.0"
34
+ spec.add_development_dependency "rake", "~> 13.0"
37
35
  end
metadata CHANGED
@@ -1,35 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redi_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Pezza
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-14 00:00:00.000000000 Z
11
+ date: 2020-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activemodel
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '5.1'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '6.1'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '5.1'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '6.1'
33
13
  - !ruby/object:Gem::Dependency
34
14
  name: activesupport
35
15
  requirement: !ruby/object:Gem::Requirement
@@ -70,20 +50,6 @@ dependencies:
70
50
  - - "<"
71
51
  - !ruby/object:Gem::Version
72
52
  version: '5.0'
73
- - !ruby/object:Gem::Dependency
74
- name: appraisal
75
- requirement: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - "~>"
78
- - !ruby/object:Gem::Version
79
- version: '2.2'
80
- type: :development
81
- prerelease: false
82
- version_requirements: !ruby/object:Gem::Requirement
83
- requirements:
84
- - - "~>"
85
- - !ruby/object:Gem::Version
86
- version: '2.2'
87
53
  - !ruby/object:Gem::Dependency
88
54
  name: bundler
89
55
  requirement: !ruby/object:Gem::Requirement
@@ -124,15 +90,15 @@ dependencies:
124
90
  requirements:
125
91
  - - "~>"
126
92
  - !ruby/object:Gem::Version
127
- version: '12.0'
93
+ version: '13.0'
128
94
  type: :development
129
95
  prerelease: false
130
96
  version_requirements: !ruby/object:Gem::Requirement
131
97
  requirements:
132
98
  - - "~>"
133
99
  - !ruby/object:Gem::Version
134
- version: '12.0'
135
- description:
100
+ version: '13.0'
101
+ description:
136
102
  email: npezza93@gmail.com
137
103
  executables: []
138
104
  extensions: []
@@ -141,9 +107,10 @@ files:
141
107
  - ".github/ISSUE_TEMPLATE/bug_report.md"
142
108
  - ".github/ISSUE_TEMPLATE/feature_request.md"
143
109
  - ".github/logo.svg"
110
+ - ".github/workflows/lint.yml"
111
+ - ".github/workflows/tests.yml"
144
112
  - ".gitignore"
145
113
  - ".rubocop.yml"
146
- - ".travis.yml"
147
114
  - Appraisals
148
115
  - CODE_OF_CONDUCT.md
149
116
  - Gemfile
@@ -153,14 +120,12 @@ files:
153
120
  - bin/console
154
121
  - bin/publish
155
122
  - bin/setup
156
- - bin/test
157
123
  - gemfiles/.bundle/config
158
- - gemfiles/rails_51.gemfile
159
- - gemfiles/rails_52.gemfile
160
- - gemfiles/rails_6.gemfile
124
+ - gemfiles/activerecord_51.gemfile
125
+ - gemfiles/activerecord_52.gemfile
126
+ - gemfiles/activerecord_61.gemfile
161
127
  - lib/redi_search.rb
162
- - lib/redi_search/add.rb
163
- - lib/redi_search/alter.rb
128
+ - lib/redi_search/add_field.rb
164
129
  - lib/redi_search/client.rb
165
130
  - lib/redi_search/client/response.rb
166
131
  - lib/redi_search/configuration.rb
@@ -168,6 +133,7 @@ files:
168
133
  - lib/redi_search/document.rb
169
134
  - lib/redi_search/document/display.rb
170
135
  - lib/redi_search/document/finder.rb
136
+ - lib/redi_search/hset.rb
171
137
  - lib/redi_search/index.rb
172
138
  - lib/redi_search/lazily_load.rb
173
139
  - lib/redi_search/log_subscriber.rb
@@ -200,6 +166,10 @@ files:
200
166
  - lib/redi_search/search/term.rb
201
167
  - lib/redi_search/spellcheck.rb
202
168
  - lib/redi_search/spellcheck/result.rb
169
+ - lib/redi_search/validatable.rb
170
+ - lib/redi_search/validations/inclusion.rb
171
+ - lib/redi_search/validations/numericality.rb
172
+ - lib/redi_search/validations/presence.rb
203
173
  - lib/redi_search/version.rb
204
174
  - redi_search.gemspec
205
175
  homepage: https://github.com/npezza93/redi_search
@@ -210,7 +180,7 @@ metadata:
210
180
  homepage_uri: https://github.com/npezza93/redi_search
211
181
  source_code_uri: https://github.com/npezza93/redi_search
212
182
  changelog_uri: https://github.com/npezza93/redi_search/releases
213
- post_install_message:
183
+ post_install_message:
214
184
  rdoc_options: []
215
185
  require_paths:
216
186
  - lib
@@ -225,8 +195,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
225
195
  - !ruby/object:Gem::Version
226
196
  version: '0'
227
197
  requirements: []
228
- rubygems_version: 3.0.3
229
- signing_key:
198
+ rubygems_version: 3.1.4
199
+ signing_key:
230
200
  specification_version: 4
231
201
  summary: RediSearch ruby wrapper that can integrate with Rails
232
202
  test_files: []
@@ -1,31 +0,0 @@
1
- ---
2
- env:
3
- global:
4
- - CC_TEST_REPORTER_ID=fec34310f03fd2cc767a85fa23d5102f3dca67b9cc967a48d9940027731394e8
5
- sudo: false
6
- language: ruby
7
- cache:
8
- directories:
9
- - gemfiles/vendor/bundle
10
- - /home/travis/.rvm/
11
- services: docker
12
- before_script:
13
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
14
- - chmod +x ./cc-test-reporter
15
- - ./cc-test-reporter before-build
16
- before_install:
17
- - docker run -d -p 6379:6379 redislabs/redisearch:latest --protected-mode no --loadmodule /usr/lib/redis/modules/redisearch.so
18
- after_script:
19
- - if [[ "$TRAVIS_TEST_RESULT" == 0 ]]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
20
- rvm:
21
- - 2.6
22
- - 2.5
23
- gemfile:
24
- - gemfiles/rails_6.gemfile
25
- - gemfiles/rails_52.gemfile
26
- - gemfiles/rails_51.gemfile
27
- jobs:
28
- include:
29
- - stage: Lint
30
- script: bundle exec rubocop --config=./.rubocop.yml
31
- rvm: 2.6
data/bin/test DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- $: << File.expand_path("../test", __dir__)
5
-
6
- require "bundler/setup"
7
- require "rails/plugin/test"
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RediSearch
4
- class Add
5
- include ActiveModel::Validations
6
-
7
- validates :score, numericality: {
8
- greater_than_or_equal_to: 0.0, less_than_or_equal_to: 1.0
9
- }
10
-
11
- def initialize(index, document, score: 1.0, replace: {}, language: nil,
12
- no_save: false)
13
- @index = index
14
- @document = document
15
- @score = score || 1.0
16
- @replace = replace
17
- @language = language
18
- @no_save = no_save
19
- end
20
-
21
- def call!
22
- validate!
23
-
24
- RediSearch.client.call!(*command).ok?
25
- end
26
-
27
- def call
28
- call!
29
- rescue Redis::CommandError
30
- false
31
- end
32
-
33
- private
34
-
35
- attr_reader :index, :document, :score, :replace, :language, :no_save
36
-
37
- def command
38
- ["ADD", index.name, document.document_id, score, *extract_options,
39
- "FIELDS", document.redis_attributes].compact
40
- end
41
-
42
- def extract_options
43
- opts = []
44
- opts << ["LANGUAGE", language] if language
45
- opts << "NOSAVE" if no_save
46
- opts << replace_options if replace?
47
- opts
48
- end
49
-
50
- def replace?
51
- replace.present?
52
- end
53
-
54
- def replace_options
55
- ["REPLACE"].tap do |replace_option|
56
- if replace.is_a?(Hash)
57
- replace_option << "PARTIAL" if replace[:partial]
58
- # replace_option << "NOCREATE" if replace[:no_create]
59
- end
60
- end
61
- end
62
- end
63
- end