Packages
Postgres-backed durable execution for Elixir: declare an FSM, the engine commits its state before each step proceeds, so instances survive process and node death and resume where they left off.
Current section
Files
Jump to
Current section
Files
gen_durable
mix.exs
mix.exs
defmodule GenDurable.MixProject do
use Mix.Project
@source_url "https://github.com/Deepwalker/gen_durable"
def project do
[
app: :gen_durable,
version: "0.2.12",
elixir: "~> 1.18",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
deps: deps(),
name: "gen_durable",
description:
"Postgres-backed durable execution for Elixir: declare an FSM, the engine " <>
"commits its state before each step proceeds, so instances survive process " <>
"and node death and resume where they left off.",
source_url: @source_url,
docs: docs(),
package: package()
]
end
defp package do
[
licenses: ["BSD-3-Clause"],
links: %{"GitHub" => @source_url},
files: ~w(lib guides mix.exs README.md LICENSE CHANGELOG.md PERFORMANCE.md .formatter.exs)
]
end
defp docs do
[
main: "readme",
extras: [
"README.md",
"guides/jobs.md": [title: "Jobs"],
"guides/machines.md": [title: "State machines"],
"guides/signals.md": [title: "Signals & await"],
"guides/children.md": [title: "Child fan-out"],
"guides/rate_limiting.md": [title: "Rate limiting"],
"guides/concurrency.md": [title: "Concurrency keys"],
"guides/identity.md": [title: "Instance identity"],
"guides/scheduling.md": [title: "Scheduling & queues"],
"guides/testing.md": [title: "Testing"],
"guides/operations.md": [title: "Operations"],
"guides/internals.md": [title: "Database internals"],
"PERFORMANCE.md": [title: "Performance"],
"CHANGELOG.md": [title: "Changelog"]
],
groups_for_extras: [
Guides: ~r{guides/.*}
],
groups_for_modules: [
"Public API": [
GenDurable,
GenDurable.FSM,
GenDurable.State,
GenDurable.Migration,
GenDurable.Testing
],
Runtime: [
GenDurable.Supervisor,
GenDurable.Scheduler,
GenDurable.Poke,
GenDurable.Await,
GenDurable.Reaper,
GenDurable.GC,
GenDurable.Registry,
GenDurable.Executor
],
Internals: [GenDurable.Queries, GenDurable.Outcome, GenDurable.Context]
]
]
end
def application do
[
extra_applications: [:logger]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:ecto_sql, "~> 3.12"},
{:postgrex, "~> 0.19"},
{:jason, "~> 1.4"},
# only for the poke: {:redis, _} transport — see GenDurable.Poke
{:redix, "~> 1.2", optional: true},
{:ex_doc, "~> 0.34", only: :dev, runtime: false}
]
end
end