Sha256: f8633948ee2369a9c9d1bdd175d8fc739a0edb74dd922acb769573735c79f782

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

require 'thread'
require 'json'
require 'net/http'

require_relative 'infield/version'

# require_relative 'infield/core_ext'
require_relative 'infield/rails' if defined?(Rails)

module Infield
  Error = Class.new(StandardError)

  autoload :DeprecationWarning, "#{__dir__}/infield/deprecation_warning.rb"
  autoload :Heartbeat, "#{__dir__}/infield/heartbeat.rb"

  class << self
    attr_accessor :api_key, :repo_environment_id, :environment, :infield_api_url

    def run(api_key: nil, repo_environment_id: nil, environment: nil, sleep_interval: 5, batch_size: 10, queue_limit: 30, heartbeat_interval: 600)
      @api_key = api_key || ENV['INFIELD_API_KEY']
      @repo_environment_id = repo_environment_id
      @infield_api_url = ENV['INFIELD_API_URL'] || 'https://app.infield.ai'
      raise 'API key is required' unless @api_key
      raise 'repo_environment_id is required' unless @repo_environment_id

      @environment = environment || defined?(Rails) ? Rails.env : nil

      # Start the deprecation warning processor
      DeprecationWarning::Runner.run(sleep_interval: sleep_interval, batch_size: batch_size, queue_limit: queue_limit)

      # Start the heartbeat
      Heartbeat::Runner.run(interval: heartbeat_interval)
    end

    def shutdown
      Heartbeat::Runner.stop
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
infield-0.2.0 lib/infield.rb