Skip to content

Rails engine to register jobs history, adding: job state, error feedback, duration, etc.

License

Notifications You must be signed in to change notification settings

platanus/active_job_log

Folders and files

NameName
Last commit message
Last commit date

Latest commit

462f895 · Sep 13, 2024

History

38 Commits
Jul 3, 2023
Nov 19, 2018
May 11, 2018
May 11, 2018
Oct 12, 2018
Aug 13, 2024
Jul 3, 2023
May 11, 2018
May 11, 2018
May 11, 2018
Jun 22, 2021
Jul 3, 2023
Jul 3, 2023
May 11, 2018
Jul 3, 2023
Jun 22, 2021
Jul 2, 2021
May 11, 2018
Jun 22, 2021

Repository files navigation

Active Job Log

Gem Version CircleCI Coverage Status

Rails engine to register jobs history, adding: job state, error feedback, duration, etc.

Installation

Add to your Gemfile:

gem "active_job_log"
bundle install

Then, run the installer:

rails generate active_job_log:install

Usage

Suppose you have defined the following job:

class MyJob < ActiveJob::Base
  def perform(param1, param2)
    # ...
  end
end

Installing this gem, after executing the job, if you execute like this:

MyJob.perform_later("p1", "p2")

you will get:

job = ActiveJobLog::Job.last
job.job_id #=> "0ca5075e-c601-45a1-9bbe-147b4d3d5391"
job.params #=> ["p1", "p2"]
job.status #=> "finished"
job.job_class #=> "MyJob"
job.error #=> nil
job.stack_trace #=> nil
job.queued_at #=> Sat, 12 May 2018 20:25:00 UTC +00:00
job.started_at #=> Sat, 12 May 2018 20:30:00 UTC +00:00
job.ended_at #=> Sat, 12 May 2018 20:30:00 UTC +00:00
job.queued_duration #=> 5
job.execution_duration #=> 10
job.total_duration #=> 15
job.queue_name #=> "default"
job.executions #=> 0

Attributes

  • job_id: ActiveJob's job_id.

  • params: parameters used to call your job.

queued pending finished failed

  • status:

    • queued: the job is queued but not executed yet.
    • pending: the job is being executed.
    • finished: the job ended satisfactorily.
    • failed: the job ended with errors.
  • job_class: a string containing your job class name.

  • error: the exception message if your job ends with errors.

  • stack_trace: the exception backtrace if your job ends with errors.

  • queued_at: datetime when job was queued.

  • started_at: datetime when job was executed.

  • ended_at: datetime when job finished regardless of whether it ended or not with errors.

  • queued_duration: seconds that lasted in queue (not registered if it is executed with perform_now).

  • execution_duration: seconds that the execution lasted.

  • total_duration: queued_duration + execution_duration.

  • queue_name: job's queue name.

  • executions: number of times this job has been executed (which increments on every retry, like after an exception.

Disable logging

If you want to avoid logging a specific job you have to add disable_job_logs config option on that job. For example:

class MyJob < ActiveJob::Base
  disable_job_logs

  def perform(param1, param2)
    # ...
  end
end

Important

If your job calls the rescue_from method, you will need to call the fail_job method explicitly to log the job completion. For example:

class MyJob < ActiveJob::Base
  def perform(param1, param2)
    # ...
  end

  rescue_from(Exception) do |exception|
    # ...
    fail_job(exception) #=> you need to call this method.
  end
end

Testing

To run the specs you need to execute, in the root path of the gem, the following command:

bundle exec guard

You need to put all your tests in the /active_job_log/spec/dummy/spec/ directory.

Publishing

On master/main branch...

  1. Change VERSION in lib/gemaker/version.rb.
  2. Change Unreleased title to current version in CHANGELOG.md.
  3. Run bundle install.
  4. Commit new release. For example: Releasing v0.1.0.
  5. Create tag. For example: git tag v0.1.0.
  6. Push tag. For example: git push origin v0.1.0.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Credits

Thank you contributors!

Platanus

Active Job Log is maintained by platanus.

License

Active Job Log is © 2021 platanus, spa. It is free software and may be redistributed under the terms specified in the LICENSE file.

About

Rails engine to register jobs history, adding: job state, error feedback, duration, etc.

Resources

License

Stars

Watchers

Forks

Packages

No packages published