redi_search 1.0.4 → 3.0.0

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