class Tori::Backend::FileSystem
Constants
- ResourceError
Attributes
root[RW]
Public Class Methods
new(root)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 7 def initialize(root) @root = root FileUtils.mkdir_p @root.to_s end
Public Instance Methods
copy_to(filename, tori_file, **opts)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 63 def copy_to(filename, tori_file, **opts) FileUtils.mkdir_p tori_file.path.dirname ::File.open(path(filename)) do |from| ::File.open(tori_file.path, 'w+') do |to| IO.copy_stream(from, to) end end end
delete(filename)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 39 def delete(filename) ::File.unlink path(filename) end
exist?(filename)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 43 def exist?(filename) ::File.exist? path(filename) end
Also aliased as: exists?
open(filename, *rest, &block)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 59 def open(filename, *rest, &block) ::File.open(path(filename), *rest, &block) end
otherwise(backend)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 77 def otherwise(backend) Chain.new(self, backend) end
path(filename)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 73 def path(filename) @root.join filename.to_s end
read(filename, *args)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 48 def read(filename, *args) if args.last.kind_of?(Hash) opt = args.pop else opt = {} end open(filename, {mode: 'rb'}.merge(opt)) do |f| f.read(*args) end end
write(filename, resource, opts = nil)
click to toggle source
# File lib/tori/backend/filesystem.rb, line 12 def write(filename, resource, opts = nil) pathname = path(filename) FileUtils.mkdir_p pathname.dirname if resource.nil? && opts && opts[:body] resource = opts[:body] end case resource when String ::File.open(pathname, 'wb'){ |f| f.write resource } when Pathname # see also https://bugs.ruby-lang.org/issues/11199 ::File.open(resource) { |src| ::File.open(pathname, 'wb'){ |dst| ::IO.copy_stream src, dst } } when NilClass raise ResourceError, "null resource" else ::File.open(pathname, 'wb') do |dst| ::IO.copy_stream resource, dst end end end