shrine-redis 0.0.1 → 1.0.0

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
  SHA1:
3
- metadata.gz: 0af4c466743d38b0a18b6a39fddd5e2975ed1fd0
4
- data.tar.gz: 1e861cfd864a1f13710d6f2ae094f69c8fd98aa0
3
+ metadata.gz: bc1cb0365ddc045d3c7ba11dfe04f502618957fc
4
+ data.tar.gz: 03b1815f9d171340c8c155cfedd9cd64f701194f
5
5
  SHA512:
6
- metadata.gz: 93c0d87b3ac63f0123eada0e74620b04806907ca418caac72468605f1c3ed1d797b8423620ba8723860eddc46f9e6578b6e2ae9ae0540c145a1ce174458d0745
7
- data.tar.gz: 125858b77442c45e8458201f47b7af3a93f676e83194f4024dd9d2f2707174eaa6d497cf01b767d061ca985e4a264d88438259fc39d8e99ba3b8d57e1e4785b2
6
+ metadata.gz: b0c64b4918bf513e3145953aae1509413a9cb996d8bf1b54d5c6c014c57a3ec5a9d4c8fab095767ec3ed8b5ccf8555fde09b6763c0a3551675035f12427f5e7a
7
+ data.tar.gz: 9a4bc6bf562bafe15815fc1f4f2a4bea9dc20368f716aec50444ec4debd53191bef46fdde7c525bae50bc24f7bb4af4de381ba026ccdbd87d87a0fa8d60ac6fb
data/README.md CHANGED
@@ -1,30 +1,29 @@
1
- # Shrine::Storage::RedisStorage
1
+ # Shrine::Storage::Redis
2
2
 
3
3
  Provides a Shrine Storage for storing files in Redis.
4
4
 
5
5
  ## Installation
6
6
 
7
7
  ```ruby
8
- gem 'shrine-redis'
8
+ gem "shrine-redis"
9
9
  ```
10
10
 
11
11
  ## Usage
12
12
 
13
13
  ```rb
14
- require "shrine/storage/redis_storage"
15
- require "redis"
14
+ require "shrine/storage/redis"
16
15
 
17
16
  redis = Redis.new(url: "redis://host:port/db")
18
17
 
19
18
  Shrine.storages = {
20
- cache: Shrine::Storage::RedisStorage.new(
21
- redis,
22
- prefix: 'cache',
19
+ cache: Shrine::Storage::Redis.new(
20
+ client: redis,
21
+ prefix: "cache",
23
22
  expire: 60
24
23
  ),
25
- store: Shrine::Storage::RedisStorage.new(
26
- redis,
27
- prefix: 'store',
24
+ store: Shrine::Storage::Redis.new(
25
+ client: redis,
26
+ prefix: "store",
28
27
  expire: 3600
29
28
  )
30
29
  }
@@ -5,14 +5,14 @@ require "stringio"
5
5
 
6
6
  class Shrine
7
7
  module Storage
8
- class RedisStorage
8
+ class Redis
9
9
  attr_reader :redis, :prefix, :expire
10
10
 
11
- def initialize(redis, prefix:, expire:)
12
- @redis = redis
11
+ def initialize(client: nil, prefix: nil, expire: nil, **options)
12
+ @redis = client || ::Redis.new(options)
13
13
  @prefix = prefix
14
14
  @expire = expire
15
- raise ArgumentError, 'Missing redis client' unless redis && redis.is_a?(Redis)
15
+ raise ArgumentError, 'Missing redis client' unless @redis.is_a?(::Redis)
16
16
  end
17
17
 
18
18
  def upload(io, id, shrine_metadata: {}, **upload_options)
@@ -39,18 +39,26 @@ class Shrine
39
39
  redis.del(key(id))
40
40
  end
41
41
 
42
+ def multi_delete(ids)
43
+ if ids.is_a?(Array)
44
+ ids.each { |id| delete(id) }
45
+ elsif ids.is_a?(String)
46
+ redis.del(keys(ids))
47
+ end
48
+ end
49
+
42
50
  private
43
51
 
44
52
  def content(id)
45
53
  redis.get(key(id)).to_s
46
54
  end
47
55
 
56
+ def keys(id)
57
+ redis.keys(key(id))
58
+ end
59
+
48
60
  def key(id)
49
- if prefix
50
- "#{prefix}:#{id}"
51
- else
52
- "#{id}"
53
- end
61
+ [*prefix, id].join(":")
54
62
  end
55
63
  end
56
64
  end
data/shrine-redis.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "shrine-redis"
3
- gem.version = "0.0.1"
3
+ gem.version = "1.0.0"
4
4
 
5
5
  gem.required_ruby_version = ">= 2.1"
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shrine-redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Crowther
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-24 00:00:00.000000000 Z
11
+ date: 2017-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shrine
@@ -89,7 +89,7 @@ extra_rdoc_files: []
89
89
  files:
90
90
  - LICENSE.txt
91
91
  - README.md
92
- - lib/shrine/storage/redis_storage.rb
92
+ - lib/shrine/storage/redis.rb
93
93
  - shrine-redis.gemspec
94
94
  homepage: https://github.com/dbongo/shrine-redis
95
95
  licenses: