lib/splash/backends/file.rb in prometheus-splash-0.5.3 vs lib/splash/backends/file.rb in prometheus-splash-0.6.0
- old
+ new
@@ -1,51 +1,87 @@
# coding: utf-8
+
+# base Splash Module
module Splash
+ # generic backends module
module Backends
+
+ # File backend definition
class File
include Splash::Config
include Splash::Exiter
include Splash::Helpers
include Splash::Loggers
+ # Constructor
+ # @param [Symbol] store name in [:execution_trace] actually (see config and constants )
+ # @return [Splash::Backends::File] a File backend
def initialize(store)
@config = get_config[:backends][:stores][store]
@path = @config[:path]
ensure_backend
end
+ # return the list of find records in backend for a specific pattern
+ # @param [String] pattern shell regexp
+ # @return [Array] list of record
def list(pattern='*')
pattern = suffix_trace(pattern)
return Dir.glob("#{@path}/#{pattern}").map{|item| ::File.basename(item,".trace") }
end
+
+ # return value of queried record
+ # @param [Hash] options
+ # @option options [Symbol] :key the name of the record
+ # @return [String] content value of record
def get(options)
return ::File.readlines("#{@path}/#{suffix_trace(options[:key])}").join
end
+ # defined and store value for specified key
+ # @param [Hash] options
+ # @option options [Symbol] :key the name of the record
+ # @option options [Symbol] :value the content value of the record
+ # @return [String] content value of record
def put(options)
::File.open("#{@path}/#{suffix_trace(options[:key])}", 'w') { |file|
file.write options[:value]
}
end
+ # delete a specific record
+ # @param [Hash] options
+ # @option options [Symbol] :key the name of the record
+ # @return [Boolean] status of the operation
def del(options)
::File.unlink("#{@path}/#{suffix_trace(options[:key])}") if File.exist?("#{@path}/#{suffix_trace(options[:key])}")
end
+ # verifiy a specific record existance
+ # @param [Hash] options
+ # @option options [Symbol] :key the name of the record
+ # @return [Boolean] presence of the record
def exist?(options)
return ::File.exist?("#{@path}/#{suffix_trace(options[:key])}")
end
+ # flush all records in backend
def flush
Dir.glob("#{@path}/*.trace").each { |file| ::File.delete(file)}
end
private
+
+ # File backend specific method for suffixing record name with .trace for filename
+ # @param [String] astring
+ # @return [String] suffixed string
def suffix_trace(astring)
return "#{astring}.trace"
end
+ # File backend specific method to test backend, correcting if requiered, spool path checking
+ # @return [True|Hash] Exiter case :configuration_error if failing to correct backend
def ensure_backend
unless verify_folder(name: @config[:path], mode: "644", owner: get_config.user_root, group: get_config.group_root).empty? then
get_logger.warn "File Backend folder : #{@config[:path]} is missing"
if make_folder path: @config[:path], mode: "644", owner: get_config.user_root, group: get_config.group_root then
get_logger.ok "File Backend folder : #{@config[:path]} created"