Class: BFS::Bucket::Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/bfs/bucket/abstract.rb

Direct Known Subclasses

FS, InMem

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(encoding: Encoding.default_external, perm: nil, **_opts) ⇒ Abstract

Initializes a new bucket

Parameters:

  • opts (Hash)

    options



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

#encodingObject (readonly)

Returns the value of attribute encoding.



6
7
8
# File 'lib/bfs/bucket/abstract.rb', line 6

def encoding
  @encoding
end

#permObject (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

#closeObject

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

Parameters:

  • src (String)

    The source path.

  • dst (String)

    The destination path.



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

Parameters:

  • src (String)

    The source path.

  • dst (String)

    The destination path.



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

Parameters:

  • path (String)

    The path to read from.

  • opts (Hash)

    Additional options, see #open.



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

Parameters:

  • path (String)

    The path to write to.

  • data (String)

    The data to write.

  • opts (Hash)

    Additional options, see #create.



77
78
79
# File 'lib/bfs/bucket/abstract.rb', line 77

def write(path, data, **opts)
  create(path, **opts) {|f| f.write data }
end