Sha256: d1847e0743f32a414b175830a36a8be9fada91a62ff2fb98c29282e203c3ec4a

Contents?: true

Size: 1.21 KB

Versions: 12

Compression:

Stored size: 1.21 KB

Contents

module Shipit
  class Status < ActiveRecord::Base
    STATES = %w(pending success failure error).freeze
    enum state: STATES.zip(STATES).to_h

    belongs_to :commit, touch: true

    validates :state, inclusion: {in: STATES, allow_blank: true}, presence: true

    after_create :enable_ci_on_stack
    after_commit :schedule_continuous_delivery, :broadcast_update, on: :create
    after_commit :touch_commit

    delegate :broadcast_update, to: :commit

    def self.replicate_from_github!(github_status)
      find_or_create_by!(
        state: github_status.state,
        description: github_status.description,
        target_url: github_status.rels.try(:[], :target).try(:href),
        context: github_status.context,
        created_at: github_status.created_at,
      )
    end

    delegate :stack, to: :commit

    def ignored?
      stack.soft_failing_statuses.include?(context)
    end

    def group?
      false
    end

    def simple_state
      state == 'error' ? 'failure' : state
    end

    private

    def enable_ci_on_stack
      commit.stack.enable_ci!
    end

    def touch_commit
      commit.touch
    end

    def schedule_continuous_delivery
      commit.schedule_continuous_delivery
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
shipit-engine-0.11.0 app/models/shipit/status.rb
shipit-engine-0.10.0 app/models/shipit/status.rb
shipit-engine-0.9.0 app/models/shipit/status.rb
shipit-engine-0.8.9 app/models/shipit/status.rb
shipit-engine-0.8.8 app/models/shipit/status.rb
shipit-engine-0.8.7 app/models/shipit/status.rb
shipit-engine-0.8.6 app/models/shipit/status.rb
shipit-engine-0.8.5 app/models/shipit/status.rb
shipit-engine-0.8.4 app/models/shipit/status.rb
shipit-engine-0.8.3 app/models/shipit/status.rb
shipit-engine-0.8.2 app/models/shipit/status.rb
shipit-engine-0.8.1 app/models/shipit/status.rb