0.02
Repository is archived
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Recurring jobs for Sucker Punch
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 0.11.3
~> 1.5.0
 Project Readme

Fist of Fury

DEPRECATED: This project is no longer maintained. I recommend using it only for messing around with the concept. If you're interested in taking this over, let me know.

Build Status Dependency Status Coverage Status Code Climate Gem Version

Recurring jobs for Sucker Punch.

Why

Sucker Punch offers the ability to run background jobs within the web server process. Yes, this means you can host your app on Heroku without paying for an extra dyno for background jobs. However, Sucker Punch does not implement recurring jobs. Enter Fist of Fury!

What

Fist of Fury is heavily inspired by Sidetiq for Sidekiq. It uses the ice_cube gem for easy creation of recurrence rules.

Installation

Add this line to your application's Gemfile:

gem 'fist_of_fury', '~> 0.3.0'

And then execute:

$ bundle

Or install it yourself as:

$ gem install fist_of_fury

Rails

Run the install generator, which installs an initializer:

$ rails generate fist_of_fury:install

Usage

You can schedule your jobs within the jobs themselves:

class SayHiJob
  include SuckerPunch::Job
  include FistOfFury::Recurrent

  recurs { minutely }

  def perform
    Rails.logger.info 'Hi!'
  end
end

GOTCHA WARNING: If you define the recurrence rules within the job classes themselves, you may run into an issue where your jobs never run in development. By default, Rails does not eager load code in development, and thus will not load your job classes, resulting in your jobs not being scheduled. Either set config.eager_load = true in development.rb or reference your job classes somewhere in an initializer (config/fist_of_fury.rb is a good candidate).

If you did not run the install generator, you need to kick off the process somewhere (like an initializer) with this:

FistOfFury.attack!

You can specify the recurrence rules during kickoff:

FistOfFury.attack! do
  LogJob.recurs { secondly(3) }
end

Configuration Options

FistOfFury.configure do |config|
  config.utc = true # false by default; makes all time within Fist of Fury UTC
end

Contributing

  1. Fork it ( http://github.com/facto/fist_of_fury/fork )
  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

Bitdeli Badge