dis 1.1.2 → 1.1.3
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 +4 -4
- data/lib/dis/jobs/change_type.rb +4 -4
- data/lib/dis/jobs/delete.rb +3 -3
- data/lib/dis/jobs/store.rb +3 -3
- data/lib/dis/layer.rb +33 -33
- data/lib/dis/storage.rb +18 -18
- data/lib/dis/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e288aeab069c9e9d3e65daeb330c4a28cd639d9d83a70cad85b91fbcc156d91c
|
4
|
+
data.tar.gz: c9b4fd556e84eb7e3ade9155f62fdc0e7220b1fdbf1fef601255ece90b8df530
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d61a6b68917905cd896300e7413e8676d7562cdd96599c6331928da12ef6f8a6bdc7ad2c7cfaccc3fff5d42bed45f6f123a1bf1f0138689dd2c26070f9c7ebe
|
7
|
+
data.tar.gz: b75616ead369930d1a52b2778afd50af9f252d75bad020836762b5247289cd4fe805fc2791b19158fdc1926d22313eb2240e5c441e8d0ac04589d966e2209a2b
|
data/lib/dis/jobs/change_type.rb
CHANGED
@@ -6,13 +6,13 @@ module Dis
|
|
6
6
|
#
|
7
7
|
# Handles delayed object type change.
|
8
8
|
#
|
9
|
-
# Dis::Jobs::ChangeType.perform_later("old_things", "new_things",
|
9
|
+
# Dis::Jobs::ChangeType.perform_later("old_things", "new_things", key)
|
10
10
|
class ChangeType < ActiveJob::Base
|
11
11
|
queue_as :dis
|
12
12
|
|
13
|
-
def perform(prev_type, new_type,
|
14
|
-
Dis::Storage.delayed_store(new_type,
|
15
|
-
Dis::Storage.delayed_delete(prev_type,
|
13
|
+
def perform(prev_type, new_type, key)
|
14
|
+
Dis::Storage.delayed_store(new_type, key)
|
15
|
+
Dis::Storage.delayed_delete(prev_type, key)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/dis/jobs/delete.rb
CHANGED
@@ -6,12 +6,12 @@ module Dis
|
|
6
6
|
#
|
7
7
|
# Handles delayed deletion of objects.
|
8
8
|
#
|
9
|
-
# Dis::Jobs::Delete.perform_later("documents",
|
9
|
+
# Dis::Jobs::Delete.perform_later("documents", key)
|
10
10
|
class Delete < ActiveJob::Base
|
11
11
|
queue_as :dis
|
12
12
|
|
13
|
-
def perform(type,
|
14
|
-
Dis::Storage.delayed_delete(type,
|
13
|
+
def perform(type, key)
|
14
|
+
Dis::Storage.delayed_delete(type, key)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/dis/jobs/store.rb
CHANGED
@@ -6,12 +6,12 @@ module Dis
|
|
6
6
|
#
|
7
7
|
# Handles delayed storage of objects.
|
8
8
|
#
|
9
|
-
# Dis::Jobs::Store.perform_later("documents",
|
9
|
+
# Dis::Jobs::Store.perform_later("documents", key)
|
10
10
|
class Store < ActiveJob::Base
|
11
11
|
queue_as :dis
|
12
12
|
|
13
|
-
def perform(type,
|
14
|
-
Dis::Storage.delayed_store(type,
|
13
|
+
def perform(type, key)
|
14
|
+
Dis::Storage.delayed_store(type, key)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/dis/layer.rb
CHANGED
@@ -66,7 +66,7 @@ module Dis
|
|
66
66
|
!delayed?
|
67
67
|
end
|
68
68
|
|
69
|
-
# Returns true if the layer
|
69
|
+
# Returns true if the layer is public.
|
70
70
|
def public?
|
71
71
|
@public
|
72
72
|
end
|
@@ -83,26 +83,26 @@ module Dis
|
|
83
83
|
|
84
84
|
# Stores a file.
|
85
85
|
#
|
86
|
-
#
|
87
|
-
# layer.store("documents",
|
86
|
+
# key = Digest::SHA1.file(file.path).hexdigest
|
87
|
+
# layer.store("documents", key, path)
|
88
88
|
#
|
89
|
-
#
|
89
|
+
# The key must be a hex digest of the file content. If an object with the
|
90
90
|
# supplied hash already exists, no action will be performed. In other
|
91
91
|
# words, no data will be overwritten if a hash collision occurs.
|
92
92
|
#
|
93
93
|
# Returns an instance of Fog::Model, or raises an error if the layer
|
94
94
|
# is readonly.
|
95
|
-
def store(type,
|
95
|
+
def store(type, key, file)
|
96
96
|
raise Dis::Errors::ReadOnlyError if readonly?
|
97
|
-
store!(type,
|
97
|
+
store!(type, key, file)
|
98
98
|
end
|
99
99
|
|
100
|
-
# Returns true if a object with the given
|
100
|
+
# Returns true if a object with the given key exists.
|
101
101
|
#
|
102
|
-
# layer.exists?("documents",
|
103
|
-
def exists?(type,
|
104
|
-
if directory(type,
|
105
|
-
directory(type,
|
102
|
+
# layer.exists?("documents", key)
|
103
|
+
def exists?(type, key)
|
104
|
+
if directory(type, key) &&
|
105
|
+
directory(type, key).files.head(key_component(type, key))
|
106
106
|
true
|
107
107
|
else
|
108
108
|
false
|
@@ -111,22 +111,22 @@ module Dis
|
|
111
111
|
|
112
112
|
# Retrieves a file from the store.
|
113
113
|
#
|
114
|
-
# layer.get("documents",
|
115
|
-
def get(type,
|
116
|
-
dir = directory(type,
|
114
|
+
# layer.get("documents", key)
|
115
|
+
def get(type, key)
|
116
|
+
dir = directory(type, key)
|
117
117
|
return unless dir
|
118
|
-
dir.files.get(key_component(type,
|
118
|
+
dir.files.get(key_component(type, key))
|
119
119
|
end
|
120
120
|
|
121
121
|
# Deletes a file from the store.
|
122
122
|
#
|
123
|
-
# layer.delete("documents",
|
123
|
+
# layer.delete("documents", key)
|
124
124
|
#
|
125
125
|
# Returns true if the file was deleted, or false if it could not be found.
|
126
126
|
# Raises an error if the layer is readonly.
|
127
|
-
def delete(type,
|
127
|
+
def delete(type, key)
|
128
128
|
raise Dis::Errors::ReadOnlyError if readonly?
|
129
|
-
delete!(type,
|
129
|
+
delete!(type, key)
|
130
130
|
end
|
131
131
|
|
132
132
|
# Returns a name for the layer.
|
@@ -142,37 +142,37 @@ module Dis
|
|
142
142
|
{ delayed: false, readonly: false, public: false, path: nil }
|
143
143
|
end
|
144
144
|
|
145
|
-
def directory_component(_type,
|
145
|
+
def directory_component(_type, _key)
|
146
146
|
path || ''
|
147
147
|
end
|
148
148
|
|
149
|
-
def key_component(type,
|
150
|
-
[type,
|
149
|
+
def key_component(type, key)
|
150
|
+
[type, key[0...2], key[2..key.length]].compact.join('/')
|
151
151
|
end
|
152
152
|
|
153
|
-
def delete!(type,
|
154
|
-
return false unless exists?(type,
|
155
|
-
get(type,
|
153
|
+
def delete!(type, key)
|
154
|
+
return false unless exists?(type, key)
|
155
|
+
get(type, key).destroy
|
156
156
|
end
|
157
157
|
|
158
|
-
def directory(type,
|
159
|
-
connection.directories.get(directory_component(type,
|
158
|
+
def directory(type, key)
|
159
|
+
connection.directories.get(directory_component(type, key))
|
160
160
|
end
|
161
161
|
|
162
|
-
def directory!(type,
|
163
|
-
dir = directory(type,
|
162
|
+
def directory!(type, key)
|
163
|
+
dir = directory(type, key)
|
164
164
|
dir ||= connection.directories.create(
|
165
|
-
key: directory_component(type,
|
165
|
+
key: directory_component(type, key),
|
166
166
|
public: public?
|
167
167
|
)
|
168
168
|
dir
|
169
169
|
end
|
170
170
|
|
171
|
-
def store!(type,
|
172
|
-
return get(type,
|
171
|
+
def store!(type, key, file)
|
172
|
+
return get(type, key) if exists?(type, key)
|
173
173
|
file.rewind if file.respond_to?(:rewind)
|
174
|
-
directory!(type,
|
175
|
-
key: key_component(type,
|
174
|
+
directory!(type, key).files.create(
|
175
|
+
key: key_component(type, key),
|
176
176
|
body: (file.is_a?(Fog::Model) ? file.body : file),
|
177
177
|
public: public?
|
178
178
|
)
|
data/lib/dis/storage.rb
CHANGED
@@ -41,18 +41,18 @@ module Dis
|
|
41
41
|
# Changes the type of an object. Kicks off a
|
42
42
|
# <tt>Dis::Jobs::ChangeType</tt> job if any delayed layers are defined.
|
43
43
|
#
|
44
|
-
# Dis::Storage.change_type("old_things", "new_things",
|
45
|
-
def change_type(prev_type, new_type,
|
44
|
+
# Dis::Storage.change_type("old_things", "new_things", key)
|
45
|
+
def change_type(prev_type, new_type, key)
|
46
46
|
require_writeable_layers!
|
47
|
-
file = get(prev_type,
|
47
|
+
file = get(prev_type, key)
|
48
48
|
store_immediately!(new_type, file)
|
49
49
|
layers.immediate.writeable.each do |layer|
|
50
|
-
layer.delete(prev_type,
|
50
|
+
layer.delete(prev_type, key)
|
51
51
|
end
|
52
52
|
if layers.delayed.writeable.any?
|
53
|
-
Dis::Jobs::ChangeType.perform_later(prev_type, new_type,
|
53
|
+
Dis::Jobs::ChangeType.perform_later(prev_type, new_type, key)
|
54
54
|
end
|
55
|
-
|
55
|
+
key
|
56
56
|
end
|
57
57
|
|
58
58
|
# Stores a file and returns a digest. Kicks off a
|
@@ -81,11 +81,11 @@ module Dis
|
|
81
81
|
|
82
82
|
# Returns true if the file exists in any layer.
|
83
83
|
#
|
84
|
-
# Dis::Storage.exists?("things",
|
85
|
-
def exists?(type,
|
84
|
+
# Dis::Storage.exists?("things", key) # => true
|
85
|
+
def exists?(type, key)
|
86
86
|
require_layers!
|
87
87
|
layers.each do |layer|
|
88
|
-
return true if layer.exists?(type,
|
88
|
+
return true if layer.exists?(type, key)
|
89
89
|
end
|
90
90
|
false
|
91
91
|
end
|
@@ -98,14 +98,14 @@ module Dis
|
|
98
98
|
# first available layer, then store it in all immediate layer.
|
99
99
|
#
|
100
100
|
# Returns an instance of Fog::Model.
|
101
|
-
def get(type,
|
101
|
+
def get(type, key)
|
102
102
|
require_layers!
|
103
103
|
|
104
104
|
fetch_count = 0
|
105
105
|
result = layers.inject(nil) do |res, layer|
|
106
106
|
res || lambda do
|
107
107
|
fetch_count += 1
|
108
|
-
layer.get(type,
|
108
|
+
layer.get(type, key)
|
109
109
|
end.call
|
110
110
|
end
|
111
111
|
|
@@ -120,18 +120,18 @@ module Dis
|
|
120
120
|
# Returns true if the file existed in any immediate layers,
|
121
121
|
# or false if not.
|
122
122
|
#
|
123
|
-
# Dis::Storage.delete("things",
|
123
|
+
# Dis::Storage.delete("things", key)
|
124
124
|
# # => true
|
125
|
-
# Dis::Storage.delete("things",
|
125
|
+
# Dis::Storage.delete("things", key)
|
126
126
|
# # => false
|
127
|
-
def delete(type,
|
127
|
+
def delete(type, key)
|
128
128
|
require_writeable_layers!
|
129
129
|
deleted = false
|
130
130
|
layers.immediate.writeable.each do |layer|
|
131
|
-
deleted = true if layer.delete(type,
|
131
|
+
deleted = true if layer.delete(type, key)
|
132
132
|
end
|
133
133
|
if layers.delayed.writeable.any?
|
134
|
-
Dis::Jobs::Delete.perform_later(type,
|
134
|
+
Dis::Jobs::Delete.perform_later(type, key)
|
135
135
|
end
|
136
136
|
deleted
|
137
137
|
end
|
@@ -139,9 +139,9 @@ module Dis
|
|
139
139
|
# Deletes content from all delayed layers.
|
140
140
|
#
|
141
141
|
# Dis::Storage.delayed_delete("things", hash)
|
142
|
-
def delayed_delete(type,
|
142
|
+
def delayed_delete(type, key)
|
143
143
|
layers.delayed.writeable.each do |layer|
|
144
|
-
layer.delete(type,
|
144
|
+
layer.delete(type, key)
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
data/lib/dis/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Inge Jørgensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '5.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: fog
|
28
|
+
name: fog-core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.1.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.1.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: fog-local
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|