fluke/devops-service/lib/helpers/result_object.rb
Tim Lianov 03dc3d8d99 v3
2018-04-04 22:44:39 +03:00

48 lines
952 B
Ruby

module Devops
module Helpers
class ResultObject
attr_reader :code, :reason
def initialize(code)
@code = code
@reason = self.class.result_codes.key(@code) || :unknown_error
end
def ok?
@code == 0
end
def failed?
!ok?
end
class << self
def result_codes
@result_codes || {ok: 0}
end
def code_of_reason(reason)
result_codes.fetch(reason)
end
def from_reason(reason)
new(code_of_reason(reason))
end
private
# defines methods like :bootstrap_error?
def set_result_codes(new_result_codes)
@result_codes = new_result_codes
@result_codes.each do |pretendent_reason, pretendent_code|
define_method "#{pretendent_reason}?" do
code == pretendent_code
end
end
end
end
end
end
end