class Top
The top level command for the falcon
executable.
Definitions
options { ... }
The command line options.
Signature
-
attribute
Samovar::Options
Implementation
options do
option "--verbose | --quiet", "Verbosity of output for debugging.", key: :logging
option "-h/--help", "Print out help information."
option "-v/--version", "Print out the application version."
option "-e/--encoding", "Specify the default external encoding of the server.", default: "UTF-8"
end
nested
The nested command to execute.
Signature
-
attribute
Command
Implementation
nested :command, {
"serve" => Serve,
"host" => Host,
"virtual" => Virtual,
"proxy" => Proxy,
"redirect" => Redirect,
"supervisor" => Supervisor,
}, default: "serve"
def verbose?
Whether verbose logging is enabled.
Signature
-
returns
Boolean
Implementation
def verbose?
@options[:logging] == :verbose
end
def quiet?
Whether quiet logging was enabled.
Signature
-
returns
Boolean
Implementation
def quiet?
@options[:logging] == :quiet
end
def update_external_encoding!(encoding = Encoding::UTF_8)
Update the external encoding.
If you don't specify these, it's possible to have issues when encodings mismatch on the server.
Signature
-
parameter
encoding
Encoding
Defaults to
Encoding::UTF_8
.
Implementation
def update_external_encoding!(encoding = Encoding::UTF_8)
if Encoding.default_external != encoding
Console.logger.warn(self) {"Updating Encoding.default_external from #{Encoding.default_external} to #{encoding}"}
Encoding.default_external = encoding
end
end
def encoding
The desired external encoding.
Implementation
def encoding
if name = @options[:encoding]
Encoding.find(name)
end
end
def call
Prepare the environment and invoke the sub-command.
Implementation
def call
if encoding = self.encoding
update_external_encoding!(encoding)
else
update_external_encoding!
end
if @options[:version]
puts "#{self.name} v#{Falcon::VERSION}"
elsif @options[:help]
self.print_usage
else
@command.call
end
end