3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/docka/cli.rb', line 3
def self.command(name)
klass = self
pascal = name.to_s.camelize
autoload pascal, "#{self.name.underscore}/#{name}" unless autoload?(pascal)
define_method name do |*args|
begin
"#{klass.name}::#{pascal}".constantize.new(self, *args).run
rescue => ex
a = []
a << "#{ex.backtrace[0]}: #{ex.message.strip} (#{ex.class.name})"
a << ex.backtrace[1..-1].map{|i| " from #{i}"}.join("\n") if ex.backtrace.size >= 2
::Docka::App.instance.logger.fatal a.join("\n")
exit 1
end
end
end
|