Object
Filesystem backend @api public
@param [Hash] options @option options [String] :dir Directory where files will be stored
# File lib/moneta/adapters/file.rb, line 13 def initialize(options = {}) raise ArgumentError, 'Option :dir is required' unless @dir = options[:dir] FileUtils.mkpath(@dir) raise "#{@dir} is not a directory" unless ::File.directory?(@dir) end
(see Proxy#clear)
# File lib/moneta/adapters/file.rb, line 52 def clear(options = {}) temp_dir = "#{@dir}-#{$$}-#{Thread.current.object_id}" ::File.rename(@dir, temp_dir) FileUtils.mkpath(@dir) self rescue Errno::ENOENT self ensure FileUtils.rm_rf(temp_dir) end
(see Proxy#create)
# File lib/moneta/adapters/file.rb, line 83 def create(key, value, options = {}) path = store_path(key) FileUtils.mkpath(::File.dirname(path)) # Call native java.io.File#createNewFile return false unless ::Java::JavaIo::File.new(path).createNewFile ::File.open(path, 'wb+') {|f| f.write(value) } true end
(see Proxy#delete)
# File lib/moneta/adapters/file.rb, line 44 def delete(key, options = {}) value = load(key, options) ::File.unlink(store_path(key)) value rescue Errno::ENOENT end
(see Proxy#increment)
# File lib/moneta/adapters/file.rb, line 64 def increment(key, amount = 1, options = {}) path = store_path(key) FileUtils.mkpath(::File.dirname(path)) ::File.open(path, ::File::RDWR | ::File::CREAT) do |f| Thread.pass until f.flock(::File::LOCK_EX) content = f.read amount += Utils.to_int(content) unless content.empty? content = amount.to_s f.pos = 0 f.write(content) f.truncate(content.bytesize) amount end end
(see Proxy#key?)
# File lib/moneta/adapters/file.rb, line 20 def key?(key, options = {}) ::File.exist?(store_path(key)) end
(see Proxy#load)
# File lib/moneta/adapters/file.rb, line 25 def load(key, options = {}) ::File.read(store_path(key)) rescue Errno::ENOENT end
(see Proxy#store)
# File lib/moneta/adapters/file.rb, line 31 def store(key, value, options = {}) temp_file = ::File.join(@dir, "value-#{$$}-#{Thread.current.object_id}") path = store_path(key) FileUtils.mkpath(::File.dirname(path)) ::File.open(temp_file, 'wb') {|f| f.write(value) } ::File.rename(temp_file, path) value rescue Exception File.unlink(temp_file) rescue nil raise end
Generated with the Darkfish Rdoc Generator 2.