Sha256: f3592f319437e1efd3721b69534ef492bcc11b85440f05ecc118b32a6f0ab72d

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

module JobsDashboard::Storage

  protected

  # Stores job log in database
  # sets last update time
  # @param [String] id job id
  # @param [Hash] status_updates updated values
  # @param [Integer] expiration optional expire time in seconds
  def store_for_id(id, attributes = nil)
    begin
      ActiveRecord::Base.connection_pool.with_connection do
        @job_log = JobsDashboard::JobLog.find_or_initialize_by sidekiq_jid: id
        @job_log.attributes = attributes if attributes
        @job_log.save
      end
    ensure
      ActiveRecord::Base.clear_active_connections!
    end
  end

  def update_job_status(id, status)
    if status.in? ['complete', 'failed', 'interrupted']
      store_for_id(id, { status: status, finished_at: Time.now })
    else
      store_for_id(id, { status: status })
    end
  end

  def add_log_for_id(id, log)
    begin
      ActiveRecord::Base.connection_pool.with_connection do
        @job_log = JobsDashboard::JobLog.find_or_initialize_by sidekiq_jid: id
        @job_log.logs << { created_at: Time.now.to_s, value: log }
        @job_log.save
      end
    ensure
      ActiveRecord::Base.clear_active_connections!
    end
  end

  def add_metadata_for_id(id, key, value)
    begin
      ActiveRecord::Base.connection_pool.with_connection do
        @job_log = JobsDashboard::JobLog.find_or_initialize_by sidekiq_jid: id
        @job_log.metadata[key] = value
        @job_log.save
      end
    ensure
      ActiveRecord::Base.clear_active_connections!
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jobs_dashboard-0.3.4 lib/jobs_dashboard/storage.rb