fluke/devops-service/lib/helpers/result_object.rb

48 lines
952 B
Ruby
Raw Normal View History

2016-03-25 14:50:22 +03:00
module Devops
module Helpers
class ResultObject
2016-03-28 00:16:11 +03:00
attr_reader :code, :reason
2016-03-25 14:50:22 +03:00
def initialize(code)
@code = code
2016-03-28 00:16:11 +03:00
@reason = self.class.result_codes.key(@code) || :unknown_error
2016-03-25 14:50:22 +03:00
end
def ok?
@code == 0
end
def failed?
!ok?
end
class << self
def result_codes
@result_codes || {ok: 0}
end
2016-03-25 14:50:22 +03:00
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
2016-03-25 14:50:22 +03:00
end
2016-03-25 14:50:22 +03:00
end
end
end