Class: Cerberus::Status
- Inherits:
-
Object
- Object
- Cerberus::Status
- Defined in:
- lib/cerberus/status.rb
Overview
Fields that are contained in status file
successful_build_timestamp
timestamp
successful (true mean previous build was successful, otherwise - false)
revision
brokeness
successful_build_revision
Instance Attribute Summary collapse
-
#current_brokeness ⇒ Object
readonly
Returns the value of attribute current_brokeness.
-
#current_build_successful ⇒ Object
readonly
Returns the value of attribute current_build_successful.
-
#previous_brokeness ⇒ Object
readonly
Returns the value of attribute previous_brokeness.
-
#previous_build_successful ⇒ Object
readonly
Returns the value of attribute previous_build_successful.
-
#revision ⇒ Object
readonly
Returns the value of attribute revision.
-
#successful_build_revision ⇒ Object
readonly
Returns the value of attribute successful_build_revision.
Class Method Summary collapse
Instance Method Summary collapse
- #current_state ⇒ Object
-
#initialize(param) ⇒ Status
constructor
A new instance of Status.
- #keep(build_successful, revision, brokeness) ⇒ Object
- #previous_build_failed? ⇒ Boolean
Constructor Details
#initialize(param) ⇒ Status
Returns a new instance of Status.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/cerberus/status.rb', line 14 def initialize(param) if param.is_a? Hash @hash = param @current_build_successful = @hash['state'] @already_kept = true else @path = param value = File.exists?(@path) ? YAML.load(IO.read(@path)) : nil @hash = case value when String value = %w(succesful successful setup).include?(value) #fix typo in status values {'successful' => value} when nil {} else value end @already_kept = false end @revision = @hash['revision'] @successful_build_revision = @hash['successful_build_revision'] @previous_build_successful = @hash['successful'] @previous_brokeness = @hash['brokeness'] # Create some convenience methods to access status @hash.keys.each { |key| self.class.send( :define_method, key ) { @hash[key] } } end |
Instance Attribute Details
#current_brokeness ⇒ Object (readonly)
Returns the value of attribute current_brokeness.
12 13 14 |
# File 'lib/cerberus/status.rb', line 12 def current_brokeness @current_brokeness end |
#current_build_successful ⇒ Object (readonly)
Returns the value of attribute current_build_successful.
12 13 14 |
# File 'lib/cerberus/status.rb', line 12 def current_build_successful @current_build_successful end |
#previous_brokeness ⇒ Object (readonly)
Returns the value of attribute previous_brokeness.
12 13 14 |
# File 'lib/cerberus/status.rb', line 12 def previous_brokeness @previous_brokeness end |
#previous_build_successful ⇒ Object (readonly)
Returns the value of attribute previous_build_successful.
12 13 14 |
# File 'lib/cerberus/status.rb', line 12 def previous_build_successful @previous_build_successful end |
#revision ⇒ Object (readonly)
Returns the value of attribute revision.
12 13 14 |
# File 'lib/cerberus/status.rb', line 12 def revision @revision end |
#successful_build_revision ⇒ Object (readonly)
Returns the value of attribute successful_build_revision.
12 13 14 |
# File 'lib/cerberus/status.rb', line 12 def successful_build_revision @successful_build_revision end |
Class Method Details
Instance Method Details
#current_state ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/cerberus/status.rb', line 79 def current_state raise "Invalid project state. Before calculating status please do keeping of it." unless @already_kept if @current_build_successful if @previous_build_successful.nil? :setup else @previous_build_successful ? :successful : :revival end else @previous_build_successful ? :failed : :broken end end |
#keep(build_successful, revision, brokeness) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/cerberus/status.rb', line 50 def keep(build_successful, revision, brokeness) raise 'Status could be kept only once. Please try to reread status file.' if @already_kept @current_brokeness = brokeness @current_build_successful = build_successful hash = {'successful' => @current_build_successful, 'timestamp' => Time.now, 'revision' => revision, 'brokeness' => brokeness} if build_successful hash['successful_build_timestamp'] = Time.now hash['successful_build_revision'] = revision else hash['successful_build_timestamp'] = @hash['successful_build_timestamp'] hash['successful_build_revision'] = @hash['successful_build_revision'] end File.open(@path, "w+", 0777) { |file| file.write(YAML.dump(hash)) } @already_kept = true end |
#previous_build_failed? ⇒ Boolean
70 71 72 73 74 75 76 77 |
# File 'lib/cerberus/status.rb', line 70 def previous_build_failed? # if @previous_build_successful.nil? # return false # else # ( :setup == current_state ) ? false : !@previous_build_successful # end @previous_build_successful.nil? ? false : !@previous_build_successful end |