drb_fileclient 0.5.1 → 0.6.2
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
- checksums.yaml.gz.sig +0 -0
- data/lib/drb_fileclient.rb +172 -114
- data.tar.gz.sig +0 -0
- metadata +35 -34
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 999b420d751011626f3ed98cdca573242b85e1935f7dd6e79e2d359ed288d180
|
4
|
+
data.tar.gz: 261480c5b9e8b66685fbbfa308dc429120abdb3421c028c822f0e9ec9e732368
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b04b95f16e439987d441508da786bbe556652ea65a368d0a84428885f0b3fd4889cdfebb42ee97687f054c9f8d24ff0a2f1f48595054a0a19411201faa4a814a
|
7
|
+
data.tar.gz: 87ef8faaabd5bd8b8196bc76d0a6eb8c2857c4a60d9795d244652ed619c3e00c5eca45ec507da3bf9e4c1ae5ffbe494e748d1495d225dd8e1cc0b05d55799a83
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/drb_fileclient.rb
CHANGED
@@ -11,90 +11,113 @@ class DRbFileClient
|
|
11
11
|
using ColouredText
|
12
12
|
|
13
13
|
def initialize(location=nil, host: nil, port: '61010', debug: false)
|
14
|
-
|
14
|
+
|
15
15
|
@debug = debug
|
16
|
-
|
16
|
+
|
17
17
|
if location then
|
18
|
-
|
18
|
+
|
19
19
|
host = location[/(?<=^dfs:\/\/)[^\/:]+/]
|
20
20
|
port = location[/(?<=^dfs:\/\/)[^:]+:(\d+)/,1] || '61010'
|
21
21
|
@directory = location[/(?<=^dfs:\/\/)[^\/]+\/(.*)/,1]
|
22
|
-
|
22
|
+
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
DRb.start_service
|
26
|
-
|
26
|
+
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def chdir(raw_path)
|
30
|
-
|
30
|
+
|
31
31
|
return Dir.chdir raw_path unless @directory or raw_path =~ /^dfs:\/\//
|
32
|
-
|
32
|
+
|
33
33
|
if raw_path[0] == '/' then
|
34
34
|
directory = raw_path[1..-1]
|
35
35
|
elsif raw_path =~ /^dfs:\/\//
|
36
36
|
@file, directory = parse_path(raw_path)
|
37
|
-
else
|
37
|
+
else
|
38
38
|
directory = File.join(@directory, raw_path)
|
39
|
-
end
|
40
|
-
|
39
|
+
end
|
40
|
+
|
41
41
|
if @file.exists? directory then
|
42
42
|
@directory = directory
|
43
43
|
else
|
44
44
|
'No such file or directory'
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
def chmod(permissions, raw_path)
|
50
|
+
|
51
|
+
if raw_path =~ /^dfs:\/\// then
|
52
|
+
|
53
|
+
@file, path = parse_path(raw_path)
|
54
|
+
@file.chmod permissions, path
|
55
|
+
|
56
|
+
else
|
57
|
+
return FileUtils.chmod(permissions, raw_path)
|
58
|
+
end
|
47
59
|
end
|
48
60
|
|
49
61
|
def cp(raw_path, raw_path2)
|
50
|
-
|
62
|
+
|
51
63
|
puts 'inside cp'.info if @debug
|
52
|
-
|
64
|
+
|
53
65
|
if raw_path =~ /^dfs:\/\// then
|
54
|
-
|
66
|
+
|
55
67
|
if @debug then
|
56
68
|
puts ('raw_path: ' + raw_path.inspect).debug
|
57
69
|
puts ('raw_path2: ' + raw_path2.inspect).debug
|
58
70
|
end
|
59
|
-
|
71
|
+
|
60
72
|
if raw_path[/^dfs:\/\/([^\/]+)/] == raw_path2[/^dfs:\/\/([^\/]+)/] then
|
61
|
-
|
73
|
+
|
62
74
|
_, path = parse_path(raw_path)
|
63
75
|
@file, path2 = parse_path(raw_path2)
|
64
76
|
@file.cp path, path2
|
65
|
-
|
66
|
-
|
67
|
-
|
77
|
+
|
78
|
+
elsif raw_path2[/^dfs:\/\//]
|
79
|
+
|
68
80
|
@file, path = parse_path(raw_path)
|
69
81
|
file2, path2 = parse_path(raw_path2)
|
82
|
+
puts ('path: ' + path.inspect).debug if @debug
|
83
|
+
puts ('path2: ' + path.inspect).debug if @debug
|
70
84
|
content = @file.read path
|
71
|
-
|
85
|
+
|
72
86
|
file2.write path2, content
|
73
87
|
|
88
|
+
else
|
89
|
+
|
90
|
+
@file, path = parse_path(raw_path)
|
91
|
+
#file2, path2 = parse_path(raw_path2)
|
92
|
+
puts ('path: ' + path.inspect).debug if @debug
|
93
|
+
puts ('path2: ' + path2.inspect).debug if @debug
|
94
|
+
content = @file.read path
|
95
|
+
|
96
|
+
File.write raw_path2, content
|
97
|
+
|
74
98
|
end
|
75
|
-
|
99
|
+
|
76
100
|
elsif raw_path2 =~ /dfs:\/\// then
|
77
|
-
|
101
|
+
|
78
102
|
puts 'option2'.info if @debug
|
79
|
-
|
103
|
+
|
80
104
|
file2, path2 = parse_path(raw_path2)
|
81
105
|
puts ('path2: ' + path2.inspect).debug if @debug
|
82
106
|
file2.write path2, File.read(raw_path)
|
83
|
-
|
107
|
+
|
84
108
|
else
|
85
|
-
|
109
|
+
|
86
110
|
puts 'option3'.info if @debug
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
111
|
+
FileUtils.cp raw_path, raw_path2
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
def directory?(filename=@filename)
|
118
|
+
|
96
119
|
return File.directory? filename unless @directory or filename =~ /^dfs:\/\//
|
97
|
-
|
120
|
+
|
98
121
|
if filename =~ /^dfs:\/\// then
|
99
122
|
@file, filename2 = parse_path(filename)
|
100
123
|
else
|
@@ -103,13 +126,13 @@ class DRbFileClient
|
|
103
126
|
end
|
104
127
|
|
105
128
|
@file.directory?(filename2)
|
106
|
-
|
107
|
-
end
|
108
|
-
|
109
|
-
def exists?(filename=@filename)
|
110
|
-
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
def exists?(filename=@filename)
|
133
|
+
|
111
134
|
return File.exists? filename unless @directory or filename =~ /^dfs:\/\//
|
112
|
-
|
135
|
+
|
113
136
|
if filename =~ /^dfs:\/\// then
|
114
137
|
@file, filename2 = parse_path(filename)
|
115
138
|
else
|
@@ -118,136 +141,164 @@ class DRbFileClient
|
|
118
141
|
end
|
119
142
|
|
120
143
|
@file.exists?(filename2)
|
121
|
-
|
144
|
+
|
122
145
|
end
|
123
|
-
|
146
|
+
|
124
147
|
alias exist? exists?
|
125
|
-
|
148
|
+
|
149
|
+
def glob(s)
|
150
|
+
|
151
|
+
if s =~ /^dfs:\/\// then
|
152
|
+
@file, s2 = parse_path(s)
|
153
|
+
else
|
154
|
+
s2 = File.join(@directory, s)
|
155
|
+
end
|
156
|
+
|
157
|
+
@file.glob s2
|
158
|
+
|
159
|
+
end
|
160
|
+
|
126
161
|
def ls(raw_path)
|
127
|
-
|
162
|
+
|
128
163
|
return Dir[raw_path] unless @directory or raw_path =~ /^dfs:\/\//
|
129
|
-
|
164
|
+
|
130
165
|
if raw_path[0] == '/' then
|
131
166
|
path = raw_path[1..-1]
|
132
167
|
elsif raw_path =~ /^dfs:\/\//
|
133
168
|
@file, path = parse_path(raw_path)
|
134
|
-
else
|
169
|
+
else
|
135
170
|
path = File.join(@directory, raw_path)
|
136
|
-
end
|
137
|
-
|
171
|
+
end
|
172
|
+
|
138
173
|
@file.ls path
|
139
|
-
|
140
|
-
end
|
141
|
-
|
174
|
+
|
175
|
+
end
|
176
|
+
|
142
177
|
def mkdir(name)
|
143
|
-
|
178
|
+
|
144
179
|
return FileUtils.mkdir name unless @directory or name =~ /^dfs:\/\//
|
145
|
-
|
180
|
+
|
146
181
|
@file, path = parse_path(name)
|
147
182
|
@file.mkdir path
|
148
183
|
end
|
149
|
-
|
184
|
+
|
150
185
|
def mkdir_p(raw_path)
|
151
|
-
|
186
|
+
|
152
187
|
unless @directory or raw_path =~ /^dfs:\/\// then
|
153
|
-
return FileUtils.mkdir_p raw_path
|
154
|
-
end
|
155
|
-
|
188
|
+
return FileUtils.mkdir_p raw_path
|
189
|
+
end
|
190
|
+
|
156
191
|
if raw_path =~ /^dfs:\/\// then
|
157
192
|
@file, filepath = parse_path(raw_path)
|
158
193
|
else
|
159
194
|
filepath = File.join(@directory, raw_path)
|
160
195
|
end
|
161
|
-
|
196
|
+
|
162
197
|
@file.mkdir_p filepath
|
163
|
-
end
|
164
|
-
|
198
|
+
end
|
199
|
+
|
165
200
|
def mv(raw_path, raw_path2)
|
166
|
-
|
201
|
+
|
167
202
|
unless @directory or raw_path =~ /^dfs:\/\// then
|
168
|
-
return FileUtils.mv raw_path, raw_path2
|
203
|
+
return FileUtils.mv raw_path, raw_path2
|
169
204
|
end
|
170
|
-
|
205
|
+
|
171
206
|
if raw_path =~ /^dfs:\/\// then
|
172
207
|
_, path = parse_path(raw_path)
|
173
208
|
else
|
174
209
|
path = File.join(@directory, raw_path)
|
175
210
|
end
|
176
|
-
|
211
|
+
|
177
212
|
if raw_path2 =~ /^dfs:\/\// then
|
178
213
|
_, path2 = parse_path(raw_path2)
|
179
214
|
else
|
180
215
|
path2 = File.join(@directory, raw_path2)
|
181
216
|
end
|
182
|
-
|
217
|
+
|
183
218
|
@file.mv path, path2
|
184
|
-
end
|
185
|
-
|
219
|
+
end
|
220
|
+
|
186
221
|
def pwd()
|
187
|
-
|
222
|
+
|
188
223
|
return Dir.pwd unless @directory
|
189
|
-
|
224
|
+
|
190
225
|
'/' + @directory if @file
|
191
|
-
|
192
|
-
end
|
226
|
+
|
227
|
+
end
|
193
228
|
|
194
229
|
def read(filename=@filename)
|
195
|
-
|
230
|
+
|
196
231
|
return File.read filename, s unless @directory or filename =~ /^dfs:\/\//
|
197
|
-
|
232
|
+
|
198
233
|
if filename =~ /^dfs:\/\// then
|
199
234
|
@file, path = parse_path(filename)
|
200
235
|
else
|
201
236
|
path = File.join(@directory, filename)
|
202
237
|
end
|
203
|
-
|
238
|
+
|
204
239
|
@file.read path
|
205
240
|
end
|
206
|
-
|
241
|
+
|
207
242
|
def rm(path)
|
208
|
-
|
243
|
+
|
209
244
|
return FileUtils.rm path unless @directory or path =~ /^dfs:\/\//
|
210
|
-
|
245
|
+
|
211
246
|
if path =~ /^dfs:\/\// then
|
212
247
|
@file, path2 = parse_path( path)
|
213
248
|
else
|
214
249
|
path2 = File.join(@directory, path)
|
215
250
|
end
|
216
|
-
|
251
|
+
|
217
252
|
@file.rm path2
|
218
|
-
|
219
|
-
end
|
220
|
-
|
253
|
+
|
254
|
+
end
|
255
|
+
|
256
|
+
def touch(s, mtime: Time.now)
|
257
|
+
|
258
|
+
unless @directory or s =~ /^dfs:\/\// then
|
259
|
+
return FileUtils.touch(s, mtime: mtime)
|
260
|
+
end
|
261
|
+
|
262
|
+
if s =~ /^dfs:\/\// then
|
263
|
+
@file, s2 = parse_path(s)
|
264
|
+
else
|
265
|
+
s2 = File.join(@directory, s)
|
266
|
+
end
|
267
|
+
|
268
|
+
@file.touch s2, mtime: mtime
|
269
|
+
|
270
|
+
end
|
271
|
+
|
221
272
|
def write(filename=@filename, s)
|
222
|
-
|
273
|
+
|
223
274
|
return File.write filename, s unless @directory or filename =~ /^dfs:\/\//
|
224
|
-
|
275
|
+
|
225
276
|
if filename =~ /^dfs:\/\// then
|
226
277
|
@file, path = parse_path(filename)
|
227
278
|
else
|
228
279
|
path = File.join(@directory, filename)
|
229
280
|
end
|
230
|
-
|
231
|
-
@file.write path, s
|
232
|
-
|
281
|
+
|
282
|
+
@file.write path, s
|
283
|
+
|
233
284
|
end
|
234
|
-
|
285
|
+
|
235
286
|
def zip(filename_zip, a)
|
236
|
-
|
287
|
+
|
237
288
|
puts '@directory: ' + @directory.inspect if @debug
|
238
|
-
|
289
|
+
|
239
290
|
unless @directory or filename_zip =~ /^dfs:\/\// then
|
240
|
-
|
291
|
+
|
241
292
|
Zip::File.open(zipfile_zip, Zip::File::CREATE) do |x|
|
242
293
|
|
243
|
-
a.each do |filename, buffer|
|
294
|
+
a.each do |filename, buffer|
|
244
295
|
x.get_output_stream(filename) {|os| os.write buffer }
|
245
296
|
end
|
246
297
|
|
247
298
|
end
|
248
|
-
|
299
|
+
|
249
300
|
end
|
250
|
-
|
301
|
+
|
251
302
|
if filename_zip =~ /^dfs:\/\// then
|
252
303
|
@file, filepath = parse_path(filename_zip)
|
253
304
|
else
|
@@ -255,16 +306,16 @@ class DRbFileClient
|
|
255
306
|
end
|
256
307
|
|
257
308
|
@file.zip filepath, a
|
258
|
-
|
309
|
+
|
259
310
|
end
|
260
311
|
|
261
312
|
private
|
262
|
-
|
313
|
+
|
263
314
|
def parse_path(filename)
|
264
315
|
|
265
316
|
host = filename[/(?<=^dfs:\/\/)[^\/:]+/]
|
266
317
|
@host = host if host
|
267
|
-
|
318
|
+
|
268
319
|
port = filename[/(?<=^dfs:\/\/)[^:]+:(\d+)/,1] || '61010'
|
269
320
|
|
270
321
|
file_server = DRbObject.new nil, "druby://#{host || @host}:#{port}"
|
@@ -272,24 +323,31 @@ class DRbFileClient
|
|
272
323
|
|
273
324
|
end
|
274
325
|
|
275
|
-
end
|
326
|
+
end
|
276
327
|
|
277
328
|
class DfsFile
|
278
|
-
|
329
|
+
|
279
330
|
@client = DRbFileClient.new
|
280
|
-
|
281
|
-
def self.directory?(filename) @client.directory?(filename) end
|
282
|
-
def self.exists?(filename) @client.exists?(filename) end
|
283
|
-
def self.chdir(path) @client.chdir(path) end
|
284
|
-
def self.
|
285
|
-
def self.
|
286
|
-
def self.
|
287
|
-
def self.
|
288
|
-
def self.
|
289
|
-
def self.
|
331
|
+
|
332
|
+
def self.directory?(filename) @client.directory?(filename) end
|
333
|
+
def self.exists?(filename) @client.exists?(filename) end
|
334
|
+
def self.chdir(path) @client.chdir(path) end
|
335
|
+
def self.chmod(num, filename) @client.chmod(num, filename) end
|
336
|
+
def self.cp(path, path2) @client.cp(path, path2) end
|
337
|
+
def self.glob(s) @client.glob(s) end
|
338
|
+
def self.ls(path) @client.ls(path) end
|
339
|
+
def self.mkdir(name) @client.mkdir(name) end
|
340
|
+
def self.mkdir_p(path) @client.mkdir_p(path) end
|
341
|
+
def self.mv(path, path2) @client.mv(path, path2) end
|
342
|
+
def self.pwd() @client.pwd() end
|
290
343
|
def self.read(filename) @client.read(filename) end
|
291
|
-
def self.rm(filename) @client.rm(filename) end
|
344
|
+
def self.rm(filename) @client.rm(filename) end
|
345
|
+
|
346
|
+
def self.touch(filename, mtime: Time.now)
|
347
|
+
@client.touch(filename, mtime: mtime)
|
348
|
+
end
|
349
|
+
|
292
350
|
def self.write(filename, s) @client.write(filename, s) end
|
293
351
|
def self.zip(filename, a) @client.zip(filename, a) end
|
294
|
-
|
352
|
+
|
295
353
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drb_fileclient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,31 +11,31 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMTE3MjExMTUxWhcN
|
15
|
+
MjMwMTE3MjExMTUxWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC1sfsT
|
17
|
+
Jfjs0K5yhTPZsHAcniDvpZsgsTzASYu0IbH63AZ1o3dBV7IzF6KrziLoJ4LZ7UQK
|
18
|
+
yJ6PnHUSTKBZJccpxIErNb3YlU3wYhF4aFqVxZBjt/IWVyGk62GtgbkuFGcsC2DP
|
19
|
+
sxL4/WYtZvSrDCnY/XDEK8LUO6/MQ6cF2aT3OHmXSz3zuDW83yuIWrTXbKJnjuKn
|
20
|
+
V7zM0prSGfLGNM+DlIgAGrspj+D+aofhVZ1vcsy7tHHSazErTtp88ONCoJrBv8UZ
|
21
|
+
Zw+fZV14rwhqftK7jYH0XL7kBZYILVkpehNXRFOwojnkg/Z6IECYxz2alNYwDWUB
|
22
|
+
lPzxgCPJsHoQCtustc2UHE/Ik+8QVJIHimpwquzhwECGq9MSUlYau48XlB8nBHlN
|
23
|
+
3YckYd3CjdbB/4UkCjlQOBrb0UT7HQHm+f5uCa2hXKkpWFKJNO99FBR75FAJWbQt
|
24
|
+
JfYUJzGrp2z95pc6cDvaqzXPVA48JVVWF6uUqCeoVOCcz3rISfZT5X6Y+I8CAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUWpxb19+x
|
26
|
+
FM42Y6G5h22m4V4WOQ8wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAoKkYN6WZurnK5O9oEqj+ugBPm9Gh5I75oLQCUyIw
|
29
|
+
sHsBR0clXN+Lta4plvzonH3xKx9ddzX+KWZS0tHxcm072zV6sKEKFYcQiUzQyTwc
|
30
|
+
Hyfp6E3950UwJi3KO4o3RPZC1U5/fOvnuZgVAbGqcJQf/t/SfD5M3pBymbK2QszM
|
31
|
+
fG8W6bQ2kbkv7JbD3B0Sjb1eCDy3/s/eMmbjl1Wg48al1LWQDUMGAmadqLrnFEs0
|
32
|
+
3arfhEofWPCcGw0u45L6omLCU8VWJFupyvQKDwEmkVAD9MMbnUuIsMWMkW4qFwl4
|
33
|
+
0xIrbpFWN8ZHrlc29DrrNH9IKcgsI6Fmc4jOxrqnlushuHG3uthM1hGChljvOMaB
|
34
|
+
rs55jJl1U2ICzKSTmV28mLdtigYtJHOzuXrdZSLICM9FSvRkBWOnBz2YaDCA2NXP
|
35
|
+
FGcgjmmz5fOIqq2sBxk6JW1yo2G43yIUzymWOYKT2Jh6RR0Gg3z66wWwYpFpx8yR
|
36
|
+
00JTBNVAgW+s2sLpeBtyMDbb
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2022-02-08 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: zip
|
@@ -61,24 +61,24 @@ dependencies:
|
|
61
61
|
name: c32
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0.1'
|
67
64
|
- - ">="
|
68
65
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
66
|
+
version: 0.3.0
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.3'
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "~>"
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0.1'
|
77
74
|
- - ">="
|
78
75
|
- !ruby/object:Gem::Version
|
79
|
-
version: 0.
|
76
|
+
version: 0.3.0
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.3'
|
80
80
|
description:
|
81
|
-
email:
|
81
|
+
email: digital.robertson@gmail.com
|
82
82
|
executables: []
|
83
83
|
extensions: []
|
84
84
|
extra_rdoc_files: []
|
@@ -103,7 +103,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
requirements: []
|
106
|
-
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 2.7.10
|
107
108
|
signing_key:
|
108
109
|
specification_version: 4
|
109
110
|
summary: Reads or writes files from a remote DRb server. Simple as DfsFile.read or
|
metadata.gz.sig
CHANGED
Binary file
|