Class: Vermillion::Controller::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/client/controller.rb

Direct Known Subclasses

Change, Create, Firstrun, Status, Update

Constant Summary collapse

OK =

Exit code to indicate everything is ok!

0
QUIT =

Exit code to indicate a force quit (exit) call, meaning the program quit with an error

1
QUIT_SOFT =

Exit code to indicate that the program exited with a non-zero exit code, but not one that resulted in a force quit

2

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, request) ⇒ Base

Setup internal variables that will be used in subclasses Params:

config

Instance of Vermillion::Cfg to enable access to config file

request

Instance of Vermillion::Request, enables access to request parameters



23
24
25
26
27
28
# File 'lib/client/controller.rb', line 23

def initialize(config, request)
  @config = config
  @request = request

  pre_exec
end

Instance Attribute Details

#configObject

Access the configuration object instance externally



5
6
7
# File 'lib/client/controller.rb', line 5

def config
  @config
end

#requestObject

Access the request object instance externally



7
8
9
# File 'lib/client/controller.rb', line 7

def request
  @request
end

Instance Method Details

#can_exec?(command) ⇒ Boolean

Determines if the command can execute Params:

command

Symbol containing the command we want to execute

Returns:

  • (Boolean)


53
54
55
56
57
58
59
60
61
62
63
# File 'lib/client/controller.rb', line 53

def can_exec?(command)
  # no command was passed, check if controller has a default method
  if command.nil? && respond_to?(:default)
    @method = :default
  elsif respond_to? command
    # check the controller for the requested method
    @method = command
  else
    raise NoMethodError, "Invalid method: #{command}"
  end
end

#execObject

Handle the request



38
39
40
41
42
43
44
# File 'lib/client/controller.rb', line 38

def exec
  if @request.param.nil?
    send(@method.to_sym)
  else
    send(@method.to_sym, @request.param)
  end
end

#post_execObject

Perform post-run cleanup tasks, such as deleting old logs



47
48
# File 'lib/client/controller.rb', line 47

def post_exec
end

#pre_execObject

Perform pre-run tasks



31
32
33
34
35
# File 'lib/client/controller.rb', line 31

def pre_exec
  @format = Vermillion::Helper.load('formatting')
  @network = Vermillion::Helper.load('network')
  @network.config = @config
end

#sampleObject

Default method called by exec if no argument is passed



66
67
68
# File 'lib/client/controller.rb', line 66

def sample
  Notify.warning("Method not implemented")
end