tiny-redis 0.0.6
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.
- checksums.yaml +7 -0
- data/lib/tiny-redis.rb +50 -0
- 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: []
|