tiny-redis 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/tiny-redis.rb +50 -0
  3. metadata +86 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 296d4a807a3c3b5e48431861ee59db71ab270deb37010204277a7bd6935d3417
4
+ data.tar.gz: b8df4e1e70c27b9c3e16855f6aed442c382fe08f01151de7167bb6ac136bd417
5
+ SHA512:
6
+ metadata.gz: 58e6454be3bd2c63fc2044e9b28a1ced1612eef0f23126936b95e0228a667c8860b50fa12a667125dfa8b69663e70f5b24c7d48d8df8ede8d52a7d57ac40ef88
7
+ data.tar.gz: 7b0a4758ced66d46eae7a477b10aceb582f54afc2716bca057aadf61c64f65c8cc9ed44800ec881e165aaddd2356a6f64149c6212430b783993a51f44a9cb4b8
data/lib/tiny-redis.rb ADDED
@@ -0,0 +1,50 @@
1
+ require 'connection_pool'
2
+ require 'redis'
3
+
4
+ module TinyRedis
5
+ def self.included(klass)
6
+ klass.extend(ClassMethods)
7
+ end
8
+
9
+ def save(filter)
10
+ key, crypt = self.class.setup(index)
11
+
12
+ $redis.with do |r|
13
+ r.set(key, crypt.encrypt_and_sign(self.to_json(except: filter)))
14
+ end
15
+ end
16
+
17
+ module ClassMethods
18
+ def load(index)
19
+ key, crypt = setup(index)
20
+
21
+ $redis.with do |r|
22
+ encrypted = r.get(key)
23
+ return nil if encrypted.nil?
24
+ JSON.parse(crypt.decrypt_and_verify(encrypted), object_class: self)
25
+ end
26
+ end
27
+
28
+ def setup(index)
29
+ key = Digest::SHA1.hexdigest(index)
30
+ encrypt_key = Rails.application.credentials.user[:encryptkey]
31
+ crypt = ActiveSupport::MessageEncryptor.new(encrypt_key)
32
+ return [key, crypt]
33
+ end
34
+ end
35
+
36
+ attr_accessor :errors
37
+ def initialize(params = {})
38
+ @errors = ActiveModel::Errors.new(self)
39
+
40
+ params.present? && params.each do |k,v|
41
+ self[k] = v
42
+ end
43
+ end
44
+
45
+ def []=(key, value)
46
+ return if key == 'errors' # PATCH if error sneaks in, ruins whole validation process
47
+ send("#{key}=", value)
48
+ end
49
+ end
50
+
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tiny-redis
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Pavel Zaitsev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-25 00:00:00.000000000 Z
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: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: connection_pool
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.2.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.2.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: redis
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.2'
55
+ description: tiny opinionated ORM for model objects, encryption provided.
56
+ email: pavel@arslogi.ca
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/tiny-redis.rb
62
+ homepage: http://blog.arslogi.ca/tiny-redis
63
+ licenses:
64
+ - MIT
65
+ metadata:
66
+ source_code_uri: https://github.com/pavelz/tiny-redis
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubygems_version: 3.0.6
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: tiny redis encrypted orm
86
+ test_files: []