Module: Methadone::ExitNow

Included in:
Main
Defined in:
lib/methadone/exit_now.rb

Overview

Provides #exit_now! and #help_now!. You might mix this into your business logic classes if they will need to exit the program with a human-readable error message.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(k) ⇒ Object



5
6
7
# File 'lib/methadone/exit_now.rb', line 5

def self.included(k)
  k.extend(self)
end

Instance Method Details

#exit_now!(exit_code, message = nil) ⇒ Object

Call this to exit the program immediately with the given error code and message.

exit_code

exit status you'd like to exit with

message

message to display to the user explaining the problem

If exit_code is a String and message is omitted, exit_code will be used as the message and the actual exit code will be 1.

Examples

exit_now!(4,"Oh noes!") 
  # => exit app with status 4 and show the user "Oh noes!" on stderr
exit_now!("Oh noes!")   
  # => exit app with status 1 and show the user "Oh noes!" on stderr
exit_now!(4)            
  # => exit app with status 4 and dont' give the user a message (how rude of you)


25
26
27
28
29
30
31
# File 'lib/methadone/exit_now.rb', line 25

def exit_now!(exit_code,message=nil)
  if exit_code.kind_of?(String) && message.nil?
    raise Methadone::Error.new(1,exit_code)
  else
    raise Methadone::Error.new(exit_code,message)
  end
end

#help_now!(message) ⇒ Object

Exit the program as if the user made an error invoking your app, providing them the message as well as printing the help. This is useful if you have complex UI validation that can't be done by OptionParser.

Raises:

  • (OptionParser::ParseError)


36
37
38
# File 'lib/methadone/exit_now.rb', line 36

def help_now!(message)
  raise OptionParser::ParseError.new(message)
end