Current section
8 Versions
Jump to
Current section
8 Versions
Compare versions
5
files changed
+48
additions
-14
deletions
| @@ -5,7 +5,7 @@ Conqueuer (pronounced like conquer) is a non-persistent Elixir work queue. | |
| 5 5 | |
| 6 6 | ### Documentation and Information |
| 7 7 | |
| 8 | - The [docs](http://hexdocs.pm/conqueuer/0.1.1/Conqueuer.html) can be found on the |
| 8 | + The [docs](http://hexdocs.pm/conqueuer/0.2.0/Conqueuer.html) can be found on the |
| 9 9 | hexdocs website and [further information](https://hex.pm/packages/conqueuer) on the |
| 10 10 | hex website. |
| 11 11 | |
| @@ -17,7 +17,7 @@ Conqueuer can be installed like: | |
| 17 17 | 1. Add test to your list of dependencies in `mix.exs`: |
| 18 18 | |
| 19 19 | def deps do |
| 20 | - [{:conqueuer, "~> 0.1.1"}] |
| 20 | + [{:conqueuer, "~> 0.2.0"}] |
| 21 21 | end |
| 22 22 | |
| 23 23 | 2. Ensure test is started before your application: |
| @@ -20,4 +20,4 @@ | |
| 20 20 | [{<<"app">>,<<"poolboy">>}, |
| 21 21 | {<<"optional">>,false}, |
| 22 22 | {<<"requirement">>,<<"~> 1.5">>}]}]}. |
| 23 | - {<<"version">>,<<"0.1.1">>}. |
| 23 | + {<<"version">>,<<"0.2.0">>}. |
| @@ -68,13 +68,9 @@ defmodule Conqueuer do | |
| 68 68 | def start(_type, _args) do |
| 69 69 | import Supervisor.Spec, warn: false |
| 70 70 | |
| 71 | - children = [ |
| 72 | - supervisor(MyApp.ResolversPoolSupervisor, [[], [name: :ResolversPoolSupervisor]]), |
| 73 | - worker(Conqueuer.Queue, [[], [name: :ResolversQueue]]), |
| 74 | - worker(Conqueuer.Foreman, [[name: :resolvers], [name: :ResolversForeman]]) |
| 75 | - ] |
| 71 | + children = Conqueuer.child_specs(:resolvers, MyApp.ResolversPoolSupervisor) |
| 76 72 | |
| 77 | - opts = [ strategy: :one_for_one, name: MyApp.Supervisor ] |
| 73 | + opts = [strategy: :one_for_one, name: Test.Supervisor] |
| 78 74 | Supervisor.start_link(children, opts) |
| 79 75 | end |
| 80 76 | end |
| @@ -92,10 +88,44 @@ defmodule Conqueuer do | |
| 92 88 | Queues the `args` for the work to be performed to the `name` worker queue. |
| 93 89 | """ |
| 94 90 | def work( name, args \\ nil ) do |
| 95 | - {foreman_name, queue_name} = Util.infer_conqueuer_collaborator_names( name ) |
| 91 | + {foreman_name, queue_name} = Util.infer_conqueuer_collaborator_names(name) |
| 96 92 | |
| 97 | - Conqueuer.Queue.enqueue( queue_name, args ) |
| 98 | - Conqueuer.Foreman.work_arrived( foreman_name ) |
| 93 | + Conqueuer.Queue.enqueue(queue_name, args) |
| 94 | + Conqueuer.Foreman.work_arrived(foreman_name) |
| 95 | + end |
| 96 | + |
| 97 | + @doc """ |
| 98 | + Generates the child process specs for a Conqueuer work queue. Expects the |
| 99 | + name of the pool and module of the pool supervisor. |
| 100 | + |
| 101 | + Manual way: |
| 102 | + |
| 103 | + children = [ |
| 104 | + supervisor(MyApp.ResolversPoolSupervisor, [[], [name: :ResolversPoolSupervisor]]), |
| 105 | + worker(Conqueuer.Queue, [[], [name: :ResolversQueue]]), |
| 106 | + worker(Conqueuer.Foreman, [[name: :resolvers], [name: :ResolversForeman]]) |
| 107 | + ] |
| 108 | + |
| 109 | + opts = [strategy: :one_for_one, name: MyApp.Supervisor] |
| 110 | + Supervisor.start_link(children, opts) |
| 111 | + |
| 112 | + Using the helper: |
| 113 | + |
| 114 | + children = Conqueuer.child_specs( :resolvers, Test.PoolSupervisor ) |
| 115 | + |
| 116 | + opts = [strategy: :one_for_one, name: Test.Supervisor] |
| 117 | + Supervisor.start_link(children, opts) |
| 118 | + """ |
| 119 | + def child_specs(pool_name, pool_supervisor_module) do |
| 120 | + import Supervisor.Spec, warn: false |
| 121 | + |
| 122 | + {foreman, pool, pool_supervisor, queue} = Util.infer_collaborator_names(pool_name) |
| 123 | + |
| 124 | + [ |
| 125 | + supervisor(pool_supervisor_module, [[], [name: pool_supervisor]]), |
| 126 | + worker(Conqueuer.Queue, [[], [name: queue]]), |
| 127 | + worker(Conqueuer.Foreman, [[name: pool_name], [name: foreman]]) |
| 128 | + ] |
| 99 129 | end |
| 100 130 | |
| 101 131 | end |
| @@ -1,7 +1,7 @@ | |
| 1 1 | defmodule Conqueuer.Util do |
| 2 2 | |
| 3 3 | def infer_collaborator_names( name ) do |
| 4 | - {infer_foreman_name( name ), infer_pool_name( name ), infer_queue_name( name )} |
| 4 | + {infer_foreman_name( name ), infer_pool_name( name ), infer_pool_supervisor_name( name ), infer_queue_name( name )} |
| 5 5 | end |
| 6 6 | |
| 7 7 | def infer_conqueuer_collaborator_names( name ) do |
| @@ -16,6 +16,10 @@ defmodule Conqueuer.Util do | |
| 16 16 | (infer_base_name( name ) <> "Foreman") |> String.to_atom |
| 17 17 | end |
| 18 18 | |
| 19 | + def infer_pool_supervisor_name( name ) do |
| 20 | + (infer_base_name( name ) <> "PoolSupervisor") |> String.to_atom |
| 21 | + end |
| 22 | + |
| 19 23 | def infer_pool_name( name ) do |
| 20 24 | name |
| 21 25 | end |
| @@ -3,7 +3,7 @@ defmodule Conqueuer.Mixfile do | |
| 3 3 | |
| 4 4 | def project do |
| 5 5 | [app: :conqueuer, |
| 6 | - version: "0.1.1", |
| 6 | + version: "0.2.0", |
| 7 7 | elixir: "~> 1.1", |
| 8 8 | build_embedded: Mix.env == :prod, |
| 9 9 | preferred_cli_env: [espec: :test], |