Sha256: b4f5767fc4f8996daac61b7efe989e0c75355c242f0ee0550565fbb5d750db10

Contents?: true

Size: 952 Bytes

Versions: 1

Compression:

Stored size: 952 Bytes

Contents

class NarrativeMethodCommand < Liza::Command
  class Error < StandardError; end
  class Invalid < Error; end

  def self.call(args)
    log "args = #{args.inspect}"
    new.call(args)
  end

  # instance methods

  def call(args)
    @args = args
    log "@args = #{args.inspect}"
    return help if args.empty?

    validate
    perform
  rescue StandardError => error
    @error = error
    handle
  ensure
    @result
  end

  def validate
    raise NotImplementedError
  end

  def perform
    raise NotImplementedError
  end

  def handle
    log render "error.txt"
  end

  def help
    log render "help.txt"
  end
end

__END__

# view success.txt.erb

RESULT:

class      <%= @result.class %>
value      <%= @result %>

# view error.txt.erb

ERROR:

class      <%= @error.class %>
message    <%= @error.message %>
backtrace  <%= @error.backtrace.select { |s| @stop = true if s.include?("/exe/lizarb:"); !defined? @stop }.join "\n           " %>

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lizarb-1.0.4 app_new/dev/commands/narrative_method_command.rb