Cronex
A cron like system built with elixir, inspired by whenever ruby gem.
Installation
Add cronex to your list of dependencies in mix.exs:
def deps do
[{:cronex, "~> 0.1.1"}]
end
Then run mix deps.get to get the package.
Getting started
Cronex makes it really easy and intuitive to schedule cron like jobs.
You use the Cronex.Scheduler module to define a scheduler and add jobs to it.
Cronex will gather jobs from the scheduler you defined and will run them at the expected time.
# Somewhere in your application define your scheduler
defmodule MyApp.Scheduler do
use Cronex.Scheduler
every :hour do
IO.puts "Every hour job"
end
every :day, at: "10:00" do
IO.puts "Every day job at 10:00"
end
end
# Start scheduler with start_link
MyApp.Scheduler.start_link
# Or add it to your supervision tree
defmodule MyApp.Supervisor do
use Supervisor
# ...
def init(_opts) do
children = [
# ...
supervisor(MyApp.Scheduler, [])
# ...
]
supervise(children, strategy: :one_for_one)
end
# ...
endYou can define as much schedulers as you want.
Roadmap
- [ ] Improve overall documentation
-
[ ] Improve job
can_run/1tests (with every possible combiantion) - [ ] Add support for different time zones
- [ ] Add support to run jobs in different nodes
- [ ] More complex every statements (every 3 days, every 4 hours, etc…)
- [ ] Add test helpers to test jobs/schedulers
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/jbernardo95/cronex.
License
Cronex source code is licensed under the MIT License.