redcord 0.1.5 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf6ea43c415c480fb7b3484deb69005c13f52bb644fef52f5570d078b15baf46
4
- data.tar.gz: 0ae55fe438326a9fac46364e6ca0652d71da69aadae9dd204477f1ef502211fc
3
+ metadata.gz: 243af4e2e05e9b611adabe523330b170d853434920ca81530e081d63790c871a
4
+ data.tar.gz: 24baac2c7c4eb7d2d6f0dc9a90988b77461d95b683e01cc18892ba1a5894f6a1
5
5
  SHA512:
6
- metadata.gz: 5f45e3e9bb1c575051df21af680a817bff3a1bb2a367adba95258ab23535cb0fb08d024008edfdd16c58e4132bf67037e7f8bb8ce947e494323ef23a33e4ab1a
7
- data.tar.gz: d99aa9db0fec8580aacb6fa066612b6cc39c4028fb5a2af4c3c2bc03e851c1bdfa58a2eb17c121e148fef171a1913ed5086e4a2abc877fa47149aa701b260092
6
+ metadata.gz: f3b81515ee166f4c57bc2c2a1f4abb9b11d5e32aa349b5ec748503e4b689edfaf64b2caa4e23e3ce8ce3a0c0b628929fa6a848f445fc0eed9990b0a43d1e12a1
7
+ data.tar.gz: c6a6fd2af78a0d53fdf5aa26b3673d3c2bdbac716fa8dfefb6b14b8793512daf5764857b5033573078ccdb66cb0e2a13fd2e1040dc201978073f972880b667b4
@@ -3,15 +3,8 @@
3
3
  # typed: strict
4
4
 
5
5
  require 'sorbet-coerce'
6
-
7
6
  require 'redcord/relation'
8
7
 
9
- module Redcord
10
- # Raised by Model.find
11
- class RecordNotFound < StandardError; end
12
- class InvalidAction < StandardError; end
13
- end
14
-
15
8
  module Redcord::Actions
16
9
  extend T::Sig
17
10
  extend T::Helpers
@@ -171,6 +164,13 @@ module Redcord::Actions
171
164
  )
172
165
  end
173
166
  end
167
+ # TODO: break down Redis::CommandError further by parsing the error message
168
+ rescue Redis::CommandError => e
169
+ if e.message.include?('has been deleted')
170
+ raise Redcord::RedcordDeletedError.new(e)
171
+ else
172
+ raise e
173
+ end
174
174
  end
175
175
 
176
176
  sig { returns(T::Boolean) }
@@ -179,7 +179,6 @@ module Redcord::Actions
179
179
 
180
180
  true
181
181
  rescue Redis::CommandError
182
- # TODO: break down Redis::CommandError by parsing the error message
183
182
  false
184
183
  end
185
184
 
@@ -213,6 +212,13 @@ module Redcord::Actions
213
212
  )
214
213
  end
215
214
  end
215
+ # TODO: break down Redis::CommandError further by parsing the error message
216
+ rescue Redis::CommandError => e
217
+ if e.message.include?('has been deleted')
218
+ raise Redcord::RedcordDeletedError.new(e)
219
+ else
220
+ raise e
221
+ end
216
222
  end
217
223
 
218
224
  sig { params(args: T::Hash[Symbol, T.untyped]).returns(T::Boolean) }
@@ -221,7 +227,6 @@ module Redcord::Actions
221
227
 
222
228
  true
223
229
  rescue Redis::CommandError
224
- # TODO: break down Redis::CommandError by parsing the error message
225
230
  false
226
231
  end
227
232
 
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # typed: strict
4
- module Redcord
5
- class InvalidAttribute < StandardError; end
6
- end
7
4
 
8
5
  module Redcord::Attribute
9
6
  extend T::Sig
@@ -13,16 +13,16 @@ class Redcord::ConnectionPool
13
13
  # Avoid method_missing when possible for better performance
14
14
  methods = Set.new(Redcord::Redis.instance_methods(false) + Redis.instance_methods(false))
15
15
  methods.each do |method_name|
16
- define_method method_name do |*args, &blk|
16
+ define_method method_name do |*args, **kwargs, &blk|
17
17
  @connection_pool.with do |redis|
18
- redis.send(method_name, *args, &blk)
18
+ redis.send(method_name, *args, **kwargs, &blk)
19
19
  end
20
20
  end
21
21
  end
22
22
 
23
- def method_missing(method_name, *args, &blk)
23
+ def method_missing(method_name, *args, **kwargs, &blk)
24
24
  @connection_pool.with do |redis|
25
- redis.send(method_name, *args, &blk)
25
+ redis.send(method_name, *args, **kwargs, &blk)
26
26
  end
27
27
  end
28
28
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Redcord
4
+ class RedcordError < StandardError; end
5
+
6
+ # Raised by Model.find
7
+ class RecordNotFound < RedcordError; end
8
+ class InvalidAction < RedcordError; end
9
+
10
+ # Raised by Model.where
11
+ class InvalidQuery < RedcordError; end
12
+ class AttributeNotIndexed < RedcordError; end
13
+ class WrongAttributeType < TypeError; end
14
+ class CustomIndexInvalidQuery < RedcordError; end
15
+ class CustomIndexInvalidDesign < RedcordError; end
16
+ class RedcordDeletedError < ::Redis::CommandError; end
17
+
18
+ # Raised by shared_by_attribute
19
+ class InvalidAttribute < RedcordError; end
20
+ end
@@ -48,7 +48,7 @@ module Redcord::Migration::Index
48
48
  sig { params(model: T.class_of(Redcord::Base), key: String).void }
49
49
  def _del_zset(model, key)
50
50
  # ZPOPMIN might not be avaliable on old redis servers
51
- model.redis.zscan_each(match: key) do |id, _|
51
+ model.redis.zscan_each(key) do |id, _|
52
52
  model.redis.zrem(key, id)
53
53
  end
54
54
 
@@ -24,9 +24,16 @@ class Redcord::Railtie < Rails::Railtie
24
24
  config_file = 'config/redcord.yml'
25
25
 
26
26
  if File.file?(config_file)
27
- Redcord::Base.configurations = YAML.load(
28
- ERB.new(File.read(config_file)).result
29
- )
27
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.1.0')
28
+ Redcord::Base.configurations = YAML.load(
29
+ ERB.new(File.read(config_file)).result,
30
+ )
31
+ else
32
+ Redcord::Base.configurations = YAML.load(
33
+ ERB.new(File.read(config_file)).result,
34
+ aliases: true,
35
+ )
36
+ end
30
37
  end
31
38
 
32
39
  Redcord._after_initialize!
@@ -6,10 +6,6 @@ require 'active_support'
6
6
  require 'active_support/core_ext/array'
7
7
  require 'active_support/core_ext/module'
8
8
 
9
- module Redcord
10
- class InvalidQuery < StandardError; end
11
- end
12
-
13
9
  class Redcord::Relation
14
10
  extend T::Sig
15
11
 
@@ -4,14 +4,6 @@
4
4
 
5
5
  require 'redcord/range_interval'
6
6
 
7
- module Redcord
8
- # Raised by Model.where
9
- class AttributeNotIndexed < StandardError; end
10
- class WrongAttributeType < TypeError; end
11
- class CustomIndexInvalidQuery < StandardError; end
12
- class CustomIndexInvalidDesign < StandardError; end
13
- end
14
-
15
7
  # This module defines various helper methods on Redcord for serialization
16
8
  # between the Ruby client and Redis server.
17
9
  module Redcord::Serializer
data/lib/redcord.rb CHANGED
@@ -32,6 +32,7 @@ module Redcord
32
32
  end
33
33
 
34
34
  require 'redcord/base'
35
+ require 'redcord/errors'
35
36
  require 'redcord/migration'
36
37
  require 'redcord/migration/migrator'
37
38
  require 'redcord/migration/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redcord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chan Zuckerberg Initiative
@@ -123,35 +123,35 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.4.4704
125
125
  - !ruby/object:Gem::Dependency
126
- name: codecov
126
+ name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0'
131
+ version: '3.2'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0'
138
+ version: '3.2'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rspec
140
+ name: simplecov
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: '3.2'
145
+ version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: '3.2'
152
+ version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: simplecov
154
+ name: simplecov-cobertura
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -177,6 +177,7 @@ files:
177
177
  - lib/redcord/base.rb
178
178
  - lib/redcord/configurations.rb
179
179
  - lib/redcord/connection_pool.rb
180
+ - lib/redcord/errors.rb
180
181
  - lib/redcord/logger.rb
181
182
  - lib/redcord/lua_script_reader.rb
182
183
  - lib/redcord/migration.rb
@@ -213,7 +214,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
213
214
  requirements:
214
215
  - - ">="
215
216
  - !ruby/object:Gem::Version
216
- version: 2.5.0
217
+ version: 2.7.0
217
218
  required_rubygems_version: !ruby/object:Gem::Requirement
218
219
  requirements:
219
220
  - - ">="