async-job-adapter-active_job 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2541d43d2f4a3af9fde5d6ab21963517f7110074e9d5be65f95ad1bc0a8474f
4
- data.tar.gz: 1c66fc5ccaa44901d2350edcc637ff98d24da17c0eb73d93e7e87a4ebcaf0965
3
+ metadata.gz: f9886f60d5b9890346ead69e741f0da9a280faced6208442e0008b0d7464295c
4
+ data.tar.gz: 349d465199ec1868eb2ad419a75ca5ba7c804b5b0971e141e94ff970da227f7f
5
5
  SHA512:
6
- metadata.gz: 75a89ee5aed3673c43d1c48ffbce76270a2b87d4d7fcdc42d4215d03feea7d0860732306578a8c2b615c1ec95807250defabb4391bcbad1ec5eb75e2601c8887
7
- data.tar.gz: 4eff290f22b07238e7b0f1eaa6d3ad60383d9c7c08d3dddebe463e2c38c511198e692de043a21ee4bc0510b9d32d18160a4ea6c0a5dc15a80c0e0168a3f1f8bc
6
+ metadata.gz: 6475379ef3db21705f7f2c05537f676a49f6a2c0e28200dc70840126acff35fff2b0478b51c876ef17be9f7730a1fc1d7b41b33ffa793fe9d485bf886e98e520
7
+ data.tar.gz: e82114719fe5cd8b86c5eff0cb3d0966f846de8e795c5d75a604a81e839cae88de258cf56d36035046807cca6e2adb0d8e77b6679357311536bec092c6ba65de
checksums.yaml.gz.sig CHANGED
Binary file
@@ -14,30 +14,30 @@ module Async
14
14
  module Job
15
15
  module Adapter
16
16
  module ActiveJob
17
- # A dispatcher for managing multiple backends.
17
+ # A dispatcher for managing multiple definitions.
18
18
  class Dispatcher
19
- # Prepare the dispacher with the given backends and aliases.
20
- # @parameter backends [Hash(String, Proc)] The backends to use for processing jobs.
21
- # @parameter aliases [Hash(String, Proc)] The aliases for the backends.
22
- def initialize(backends, aliases = {})
23
- @backends = backends
19
+ # Prepare the dispacher with the given definitions and aliases.
20
+ # @parameter definitions [Hash(String, Proc)] The definitions to use constructing queues.
21
+ # @parameter aliases [Hash(String, Proc)] The aliases for the definitions.
22
+ def initialize(definitions, aliases = {})
23
+ @definitions = definitions
24
24
  @aliases = aliases
25
25
 
26
- @pipelines = {}
26
+ @queues = {}
27
27
  end
28
28
 
29
- # @attribute [Hash(String, Proc)] The backends to use for processing jobs.
30
- attr :backends
29
+ # @attribute [Hash(String, Proc)] The definitions to use for processing jobs.
30
+ attr :definitions
31
31
 
32
- # @attribute [Hash(String, String)] The aliases for the backends.
32
+ # @attribute [Hash(String, String)] The aliases for the definitions.
33
33
  attr :aliases
34
34
 
35
- # Lookup a pipeline by name, constructing it if necessary using the given backend.
36
- # @parameter name [String] The name of the pipeline/backend.
35
+ # Look up a queue by name, constructing it if necessary using the given definition.
36
+ # @parameter name [String] The name of the queue.
37
37
  def [](name)
38
- @pipelines.fetch(name) do
39
- backend = @backends.fetch(name)
40
- @pipelines[name] = build(backend)
38
+ @queues.fetch(name) do
39
+ definition = @definitions.fetch(name)
40
+ @queues[name] = build(definition)
41
41
  end
42
42
  end
43
43
 
@@ -45,30 +45,30 @@ module Async
45
45
  def enqueue(job)
46
46
  name = @aliases.fetch(job.queue_name, job.queue_name)
47
47
 
48
- self[name].producer.enqueue(job)
48
+ self[name].client.enqueue(job)
49
49
  end
50
50
 
51
51
  # Enqueue a job for processing at a specific time.
52
52
  def enqueue_at(job, timestamp)
53
53
  name = @aliases.fetch(job.queue_name, job.queue_name)
54
54
 
55
- self[name].producer.enqueue_at(job, timestamp)
55
+ self[name].client.enqueue_at(job, timestamp)
56
56
  end
57
57
 
58
- # Start processing jobs in the given pipeline.
58
+ # Start processing jobs in the given queue.
59
59
  def start(name)
60
- self[name].consumer.start
60
+ self[name].server.start
61
61
  end
62
62
 
63
- private def build(backend)
63
+ private def build(definition)
64
64
  builder = Builder.new(Executor::DEFAULT)
65
65
 
66
- builder.instance_eval(&backend)
66
+ builder.instance_eval(&definition)
67
67
 
68
- builder.build do |producer|
69
- # Ensure that the producer is an interface:
70
- unless producer.is_a?(Interface)
71
- Interface.new(producer)
68
+ builder.build do |client|
69
+ # Ensure that the client is an interface:
70
+ unless client.is_a?(Interface)
71
+ Interface.new(client)
72
72
  end
73
73
  end
74
74
  end
@@ -31,7 +31,7 @@ module Async
31
31
  @delegate&.stop
32
32
  end
33
33
 
34
- # The default executor, at the end of the pipeline.
34
+ # The default executor, for use at the end of the queue.
35
35
  DEFAULT = self.new.freeze
36
36
  end
37
37
  end
@@ -7,7 +7,7 @@ module Async
7
7
  module Job
8
8
  module Adapter
9
9
  module ActiveJob
10
- # An interface for `ActiveJob` that allows you to use `Async::Job` as the backend.
10
+ # An interface for `ActiveJob` that allows you to use `Async::Job` as the queue.
11
11
  class Interface
12
12
  def initialize(delegate)
13
13
  @delegate = delegate
@@ -4,7 +4,7 @@
4
4
  # Copyright, 2024, by Samuel Williams.
5
5
 
6
6
  require 'async/job'
7
- require 'async/job/backend/inline'
7
+ require 'async/job/processor/inline'
8
8
 
9
9
  require 'thread/local'
10
10
 
@@ -16,53 +16,53 @@ module Async
16
16
  module Job
17
17
  module Adapter
18
18
  module ActiveJob
19
- # A Rails-specific adapter for `ActiveJob` that allows you to use `Async::Job` as the backend.
19
+ # A Rails-specific adapter for `ActiveJob` that allows you to use `Async::Job` as the queue.
20
20
  class Railtie < ::Rails::Railtie
21
- # The default pipeline for processing jobs, using the `Inline` backend.
22
- DEFAULT_PIPELINE = proc do
23
- queue Backend::Inline
21
+ # The default queue definition for processing jobs, using the `Inline` backend.
22
+ DEFAULT_QUEUE_DEFINITION = proc do
23
+ dequeue Processor::Inline
24
24
  end
25
25
 
26
26
  def initialize
27
- @backends = {"default" => DEFAULT_PIPELINE}
27
+ @definitions = {"default" => DEFAULT_QUEUE_DEFINITION}
28
28
  @aliases = {}
29
29
  end
30
30
 
31
- # The backends that are available for processing jobs.
32
- attr :backends
31
+ # The queues that are available for processing jobs.
32
+ attr :definitions
33
33
 
34
- # The aliases for the backends.
34
+ # The aliases for the definitions, if any.
35
35
  attr :aliases
36
36
 
37
37
  # Define a new backend for processing jobs.
38
38
  # @parameter name [String] The name of the backend.
39
39
  # @parameter aliases [Array(String)] The aliases for the backend.
40
40
  # @parameter block [Proc] The block that defines the backend.
41
- def backend_for(name, *aliases, &block)
42
- @backends[name] = block
41
+ def queue_for(name, *aliases, &block)
42
+ @definitions[name] = block
43
43
 
44
44
  if aliases.any?
45
45
  alias_for(name, *aliases)
46
46
  end
47
47
  end
48
48
 
49
- # Define an alias for a backend.
49
+ # Define an alias for a queue.
50
50
  def alias_for(name, *aliases)
51
51
  aliases.each do |alias_name|
52
52
  @aliases[alias_name] = name
53
53
  end
54
54
  end
55
55
 
56
- # Used for dispatching jobs to a thread-local backend to avoid thread-safety issues.
56
+ # Used for dispatching jobs to a thread-local queue to avoid thread-safety issues.
57
57
  class ThreadLocalDispatcher
58
- def initialize(backends, aliases)
59
- @backends = backends
58
+ def initialize(definitions, aliases)
59
+ @definitions = definitions
60
60
  @aliases = aliases
61
61
  end
62
62
 
63
63
  # The dispatcher for the current thread.
64
64
  def dispatcher
65
- Thread.current.async_job_adapter_active_job_dispatcher ||= Dispatcher.new(@backends)
65
+ Thread.current.async_job_adapter_active_job_dispatcher ||= Dispatcher.new(@definitions, @aliases)
66
66
  end
67
67
 
68
68
  # Enqueue a job to be processed at a specific time.
@@ -76,7 +76,7 @@ module Async
76
76
  end
77
77
 
78
78
  # Start processing jobs in the queue with the given name.
79
- # @parameter name [String] The name of the backend.
79
+ # @parameter name [String] The name of the queue.
80
80
  def start(name)
81
81
  dispatcher.start(name)
82
82
  end
@@ -87,10 +87,11 @@ module Async
87
87
  config.active_job.queue_adapter.start(name)
88
88
  end
89
89
 
90
- DEFAULT_QUEUE_ADAPTER = ThreadLocalDispatcher.new(self.backends, self.aliases)
90
+ DEFAULT_DISPATCHER = ThreadLocalDispatcher.new(self.definitions, self.aliases)
91
91
 
92
92
  config.async_job = self
93
- config.active_job.queue_adapter = DEFAULT_QUEUE_ADAPTER
93
+
94
+ config.active_job.queue_adapter = DEFAULT_DISPATCHER
94
95
  end
95
96
  end
96
97
  end
@@ -7,7 +7,7 @@ module Async
7
7
  module Job
8
8
  module Adapter
9
9
  module ActiveJob
10
- VERSION = "0.8.0"
10
+ VERSION = "0.10.0"
11
11
  end
12
12
  end
13
13
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-job-adapter-active_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '0.6'
48
+ version: '0.9'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '0.6'
55
+ version: '0.9'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: async-service
58
58
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file