Sha256: 7c6849d6c0d84eb774161f0002ddbe126a4afa3fbb084e65e25656ca8b7a1afa

Contents?: true

Size: 1.08 KB

Versions: 13

Compression:

Stored size: 1.08 KB

Contents

module LitmusPaper
  class Service
    def initialize(name, dependencies = [], checks = [])
      @name = name
      @dependencies = dependencies
      @checks = checks
    end

    def current_health
      forced_health = _determine_forced_health

      health = forced_health ? forced_health : LitmusPaper::Health.new
      @dependencies.each do |dependency|
        health.ensure(dependency)
      end

      @checks.each do |check|
        health.perform(check)
      end
      health
    end

    def measure_health(metric_class, options)
      @checks << metric_class.new(options[:weight])
    end

    def measure_health_with_args(metric_class, *args)
      @checks << metric_class.new(*args)
    end

    def depends(dependency_class, *args)
      @dependencies << dependency_class.new(*args)
    end

    def _health_files
      StatusFile.priority_check_order_for_service(@name)
    end

    def _determine_forced_health
      _health_files.map do |status_file|
        LitmusPaper::Health.new(status_file.forced, status_file.content) if status_file.exists?
      end.compact.first
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
litmus_paper-1.4.2 lib/litmus_paper/service.rb
litmus_paper-1.4.1 lib/litmus_paper/service.rb
litmus_paper-1.3.0 lib/litmus_paper/service.rb
litmus_paper-1.2.0 lib/litmus_paper/service.rb
litmus_paper-1.1.1 lib/litmus_paper/service.rb
litmus_paper-1.1.0 lib/litmus_paper/service.rb
litmus_paper-1.0.0 lib/litmus_paper/service.rb
litmus_paper-0.9.9 lib/litmus_paper/service.rb
litmus_paper-0.9.7 lib/litmus_paper/service.rb
litmus_paper-0.9.6 lib/litmus_paper/service.rb
litmus_paper-0.9.5 lib/litmus_paper/service.rb
litmus_paper-0.9.4 lib/litmus_paper/service.rb
litmus_paper-0.9.3 lib/litmus_paper/service.rb