class DRbQS::Setting::Base
A base class having options of commands. We must define a method ‘exec’ this method in a child class.
Attributes
source[R]
Public Class Methods
new(opts = {}, &block)
click to toggle source
The keys of options are @option opts [Boolean] :all_keys_defined Check existences of keys on setting values. @option opts [Boolean] :log_level Use the option of log level. @option opts [Boolean] :daemon Use the option of daemon.
# File lib/drbqs/setting/base.rb, line 22 def initialize(opts = {}, &block) @source = DRbQS::Setting::Source.new(opts[:all_keys_defined]) @source.register_key(:debug, :bool => true) if opts[:log_level] @source.register_key(:log_level, :check => 1, :default => [Logger::ERROR]) end if opts[:daemon] @__daemon__ = nil @source.register_key(:daemon, :check => 1) end @source.instance_eval(&block) if block_given? @options = {} end
Public Instance Methods
clone()
click to toggle source
# File lib/drbqs/setting/base.rb, line 54 def clone new_obj = self.class.new instance_variables.each do |var_name| var = instance_variable_get(var_name) case var when NilClass, FalseClass, TrueClass, Symbol new_var = var else new_var = var.clone end new_obj.instance_variable_set(var_name, new_var) end new_obj end
parse!()
click to toggle source
We execute DRbQS::Setting::Base#parse!
before execute ‘exec’.
# File lib/drbqs/setting/base.rb, line 74 def parse! preprocess! @source.check! $DEBUG = true if get_first(:debug) @__daemon__ = get_first(:daemon) parse_log_level end
string_for_shell()
click to toggle source
# File lib/drbqs/setting/base.rb, line 46 def string_for_shell command_line_argument(true).join(" ") end
value()
click to toggle source
# File lib/drbqs/setting/base.rb, line 50 def value @source.value end
Private Instance Methods
daemon_start(output) { || ... }
click to toggle source
# File lib/drbqs/setting/base.rb, line 102 def daemon_start(output, &block) Process.daemon(true) begin $stdout = Kernel.open(output, 'w') $stderr = $stdout begin yield rescue SystemExit return true end rescue Exception => err output_error(err) ensure $stdout.close end end
exec_as_daemon() { || ... }
click to toggle source
# File lib/drbqs/setting/base.rb, line 120 def exec_as_daemon(&block) if @__daemon__ @__daemon__ = FileName.create(@__daemon__, :position => :middle, :type => :time, :directory => :parent) daemon_start(@__daemon__) do @__daemon__ = nil if block_given? yield else exec($stdout) end end true else nil end end
parse_log_level()
click to toggle source
# File lib/drbqs/setting/base.rb, line 82 def parse_log_level if arg = get_first(:log_level) case arg when /^(fatal)|(error)|(warn)|(info)|(debug)|(unknown)$/i n = eval("Logger::#{arg.upcase}") unless 0 <= n && n <= 5 raise DRbQS::Setting::InvalidLogLevel, "error: Invalid log level '#{arg}'" end when /^[0-5]$/ n = arg.to_i when 0..5 n = arg else raise DRbQS::Setting::InvalidLogLevel, "error: Invalid log level '#{arg}'" end @options[:log_level] = n end end
preprocess!()
click to toggle source
# File lib/drbqs/setting/base.rb, line 69 def preprocess! end