Parent

Daemons::Controller

Constants

COMMANDS

Attributes

app_name[R]
group[R]
options[R]

Public Class Methods

new(options = {}, argv = []) click to toggle source
# File lib/daemons/controller.rb, line 12
def initialize(options = {}, argv = [])
  @options = options
  @argv = argv

  # Allow an app_name to be specified. If not specified use the
  # basename of the script.
  @app_name = options[:app_name]

  if options[:script]
    @script = File.expand_path(options[:script])

    @app_name ||= File.split(@script)[1]
  end

  @app_name ||= 'unknown_application'

  @command, @controller_part, @app_part = Controller.split_argv(argv)

  # @options[:dir_mode] ||= :script

  @optparse = Optparse.new(self)
end
split_argv(argv) click to toggle source

Split an argv array. argv is assumed to be in the following format:

['command', 'controller option 1', 'controller option 2', ..., '--', 'app option 1', ...]

command must be one of the commands listed in COMMANDS

Returns: the command as a string, the controller options as an array, the appliation options as an array

# File lib/daemons/controller.rb, line 99
def self.split_argv(argv)
  argv = argv.dup

  command = nil
  controller_part = []
  app_part = []

  if COMMANDS.include? argv[0]
    command = argv.shift
  end

  if i = argv.index('--')
    # Handle the case where no controller options are given, just
    # options after "--" as well (i == 0)
    controller_part = (i == 0 ? [] : argv[0..i - 1])
    app_part = argv[i + 1..-1]
  else
    controller_part = argv[0..-1]
  end

  [command, controller_part, app_part]
end

Public Instance Methods

catch_exceptions(&block) click to toggle source
# File lib/daemons/cmdline.rb, line 86
def catch_exceptions(&block)
  begin
    block.call
  rescue CmdException, OptionParser::ParseError => e
    puts "ERROR: #{e}"
    puts
    print_usage
  rescue RuntimeException => e
    puts "ERROR: #{e}"
  end
end
run() click to toggle source
# File lib/daemons/controller.rb, line 43
def run
  @options.update @optparse.parse(@controller_part).delete_if { |k, v| !v }

  setup_options

  @group = ApplicationGroup.new(@app_name, @options)
  @group.controller_argv = @controller_part
  @group.app_argv = @app_part

  @group.setup

  case @command
    when 'start'
      @group.new_application.start
    when 'run'
      @options[:ontop] ||= true
      @group.new_application.start
    when 'stop'
      @group.stop_all(@options[:no_wait])
    when 'restart'
      unless @group.applications.empty?
        @group.stop_all
        sleep(1)
        @group.start_all
      else
        $stderr.puts "#{@group.app_name}: warning: no instances running. Starting..."
        @group.new_application.start
      end
    when 'reload'
      @group.reload_all
    when 'zap'
      @group.zap_all
    when 'status'
      unless @group.applications.empty?
        @group.show_status
        exit 3 if not @group.running?   # exit with status 3 to indicate that no apps are running
      else
        $stderr.puts "#{@group.app_name}: no instances running"
        exit 3                          # exit with status 3 to indicate that no apps are running
      end
    when nil
      fail CmdException.new('no command given')
    else
      fail Error.new("command '#{@command}' not implemented")
  end
end
setup_options() click to toggle source

This function is used to do a final update of the options passed to the application before they are really used.

Note that this function should only update @options and no other variables.

# File lib/daemons/controller.rb, line 40
def setup_options
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.