Class: BFS::Bucket::Abstract
- Inherits:
-
Object
- Object
- BFS::Bucket::Abstract
- Defined in:
- lib/bfs/bucket/abstract.rb
Instance Attribute Summary collapse
-
#encoding ⇒ Object
readonly
Returns the value of attribute encoding.
-
#perm ⇒ Object
readonly
Returns the value of attribute perm.
Class Method Summary collapse
-
.open(*args, **opts) ⇒ Object
Behaves like new, but accepts an optional block.
Instance Method Summary collapse
-
#close ⇒ Object
Closes the underlying connection.
-
#cp(src, dst, **opts) ⇒ Object
Copies src to dst.
-
#create(_path, **_opts) ⇒ Object
Creates a new file and opens it for writing.
-
#info(_path, **_opts) ⇒ Object
Info returns the info for a single file.
-
#initialize(encoding: Encoding.default_external, perm: nil, **_opts) ⇒ Abstract
constructor
Initializes a new bucket.
-
#ls(_pattern = '**', **_opts) ⇒ Object
Lists the contents of a bucket using a glob pattern.
-
#mv(src, dst, **_opts) ⇒ Object
Moves src to dst.
-
#open(_path, **_opts) ⇒ Object
Opens an existing file for reading May raise BFS::FileNotFound.
-
#read(path, **opts) ⇒ Object
Shortcut method to read the contents of a file into memory.
-
#rm(_path, **_opts) ⇒ Object
Deletes a file.
-
#write(path, data, **opts) ⇒ Object
Shortcut method to write data to path.
Constructor Details
#initialize(encoding: Encoding.default_external, perm: nil, **_opts) ⇒ Abstract
Initializes a new bucket
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/bfs/bucket/abstract.rb', line 25 def initialize(encoding: Encoding.default_external, perm: nil, **_opts) @encoding = encoding case perm when Integer @perm = perm when String @perm = perm.to_i(8) end BFS.defer(self, :close) end |
Instance Attribute Details
#encoding ⇒ Object (readonly)
Returns the value of attribute encoding.
6 7 8 |
# File 'lib/bfs/bucket/abstract.rb', line 6 def encoding @encoding end |
#perm ⇒ Object (readonly)
Returns the value of attribute perm.
6 7 8 |
# File 'lib/bfs/bucket/abstract.rb', line 6 def perm @perm end |
Class Method Details
.open(*args, **opts) ⇒ Object
Behaves like new, but accepts an optional block. If a block is given, buckets are automatically closed after the block is yielded.
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/bfs/bucket/abstract.rb', line 10 def self.open(*args, **opts) bucket = new(*args, **opts) return bucket unless block_given? begin yield bucket ensure bucket.close end end |
Instance Method Details
#close ⇒ Object
Closes the underlying connection
103 |
# File 'lib/bfs/bucket/abstract.rb', line 103 def close; end |
#cp(src, dst, **opts) ⇒ Object
Copies src to dst
85 86 87 88 89 90 91 |
# File 'lib/bfs/bucket/abstract.rb', line 85 def cp(src, dst, **opts) self.open(src, **opts) do |r| create(dst, **opts) do |w| IO.copy_stream(r, w) end end end |
#create(_path, **_opts) ⇒ Object
Creates a new file and opens it for writing
49 50 51 |
# File 'lib/bfs/bucket/abstract.rb', line 49 def create(_path, **_opts) raise 'not implemented' end |
#info(_path, **_opts) ⇒ Object
Info returns the info for a single file
44 45 46 |
# File 'lib/bfs/bucket/abstract.rb', line 44 def info(_path, **_opts) raise 'not implemented' end |
#ls(_pattern = '**', **_opts) ⇒ Object
Lists the contents of a bucket using a glob pattern
39 40 41 |
# File 'lib/bfs/bucket/abstract.rb', line 39 def ls(_pattern = '**', **_opts) raise 'not implemented' end |
#mv(src, dst, **_opts) ⇒ Object
Moves src to dst
97 98 99 100 |
# File 'lib/bfs/bucket/abstract.rb', line 97 def mv(src, dst, **_opts) cp(src, dst) rm(src) end |
#open(_path, **_opts) ⇒ Object
Opens an existing file for reading May raise BFS::FileNotFound
55 56 57 |
# File 'lib/bfs/bucket/abstract.rb', line 55 def open(_path, **_opts) raise 'not implemented' end |
#read(path, **opts) ⇒ Object
Shortcut method to read the contents of a file into memory
68 69 70 |
# File 'lib/bfs/bucket/abstract.rb', line 68 def read(path, **opts) self.open(path, **opts, &:read) end |
#rm(_path, **_opts) ⇒ Object
Deletes a file.
60 61 62 |
# File 'lib/bfs/bucket/abstract.rb', line 60 def rm(_path, **_opts) raise 'not implemented' end |
#write(path, data, **opts) ⇒ Object
Shortcut method to write data to path
77 78 79 |
# File 'lib/bfs/bucket/abstract.rb', line 77 def write(path, data, **opts) create(path, **opts) {|f| f.write data } end |