Class: Vfs::Drivers::Local
- Inherits:
-
Object
- Object
- Vfs::Drivers::Local
- Defined in:
- lib/vfs/drivers/local.rb
Defined Under Namespace
Classes: Writer
Constant Summary collapse
- DEFAULT_BUFFER =
1000 * 1024
Instance Attribute Summary collapse
Instance Method Summary collapse
-
#attributes(path) ⇒ Object
Attributes.
- #close ⇒ Object
-
#create_dir(path) ⇒ Object
Dir.
- #delete_dir(original_path) ⇒ Object
- #delete_file(path) ⇒ Object
- #each_entry(path, query, &block) ⇒ Object
-
#initialize(root = '') ⇒ Local
constructor
A new instance of Local.
-
#local? ⇒ Boolean
Other.
- #open(&block) ⇒ Object
-
#read_file(path, &block) ⇒ Object
File.
- #set_attributes(path, attrs) ⇒ Object
- #tmp(&block) ⇒ Object
- #to_s ⇒ Object
- #write_file(original_path, append, &block) ⇒ Object
Constructor Details
Instance Attribute Details
#buffer ⇒ Object
24 25 26 |
# File 'lib/vfs/drivers/local.rb', line 24 def buffer @buffer || DEFAULT_BUFFER end |
Instance Method Details
#attributes(path) ⇒ Object
Attributes
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/vfs/drivers/local.rb', line 31 def attributes path path = with_root path stat = ::File.stat path attrs = {} attrs[:file] = !!stat.file? attrs[:dir] = !!stat.directory? # attributes special for file system attrs[:created_at] = stat.ctime attrs[:updated_at] = stat.mtime attrs[:size] = stat.size if attrs[:file] attrs rescue Errno::ENOTDIR nil rescue Errno::ENOENT nil end |
#close ⇒ Object
21 |
# File 'lib/vfs/drivers/local.rb', line 21 def close; end |
#create_dir(path) ⇒ Object
Dir
90 91 92 93 |
# File 'lib/vfs/drivers/local.rb', line 90 def create_dir path path = with_root path ::Dir.mkdir path end |
#delete_dir(original_path) ⇒ Object
95 96 97 98 |
# File 'lib/vfs/drivers/local.rb', line 95 def delete_dir original_path path = with_root original_path ::FileUtils.rm_r path end |
#delete_file(path) ⇒ Object
77 78 79 80 |
# File 'lib/vfs/drivers/local.rb', line 77 def delete_file path path = with_root path ::File.delete path end |
#each_entry(path, query, &block) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/vfs/drivers/local.rb', line 100 def each_entry path, query, &block path = with_root path if query path_with_trailing_slash = path == '/' ? path : "#{path}/" ::Dir["#{path_with_trailing_slash}#{query}"].each do |absolute_path| name = absolute_path.sub path_with_trailing_slash, '' block.call name, ->{::File.directory?(absolute_path) ? :dir : :file} # if ::File.directory? absolute_path # block.call relative_path, :dir # else # block.call relative_path, :file # end end else ::Dir.foreach path do |name| next if name == '.' or name == '..' block.call name, ->{::File.directory?("#{path}/#{name}") ? :dir : :file} # if ::File.directory? "#{path}/#{relative_name}" # block.call relative_name, :dir # else # block.call relative_name, :file # end end end end |
#local? ⇒ Boolean
Other
145 |
# File 'lib/vfs/drivers/local.rb', line 145 def local?; true end |
#open(&block) ⇒ Object
18 19 20 |
# File 'lib/vfs/drivers/local.rb', line 18 def open &block block.call self if block end |
#read_file(path, &block) ⇒ Object
File
59 60 61 62 63 64 65 66 |
# File 'lib/vfs/drivers/local.rb', line 59 def read_file path, &block path = with_root path ::File.open path, 'r' do |is| while buff = is.gets(self.buffer || DEFAULT_BUFFER) block.call buff end end end |
#set_attributes(path, attrs) ⇒ Object
50 51 52 53 |
# File 'lib/vfs/drivers/local.rb', line 50 def set_attributes path, attrs # TODO2 set attributes not_implemented end |
#tmp(&block) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/vfs/drivers/local.rb', line 147 def tmp &block path = "/tmp/#{rand(10**6)}" # tmp_dir = "#{::Dir.tmpdir}/#{rand(10**6)}" if block begin ::FileUtils.mkdir_p with_root(path) block.call path ensure ::FileUtils.rm_r with_root(path) if ::File.exist? with_root(path) end else ::FileUtils.mkdir_p with_root(path) path end end |
#to_s ⇒ Object
163 |
# File 'lib/vfs/drivers/local.rb', line 163 def to_s; '' end |