async_block 0.2.6 → 0.2.8

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: 18e0e1824a1ab945b463420a2e016fdbe18f6d43495ca65709f4a52c74f0e745
4
- data.tar.gz: b60005b7644181beb5758ad9414439901dfa93ce58b860095a065b59c98eb06b
3
+ metadata.gz: 547d00223fe54f1c28dc29df9ede3e744d219e79da85a34896df228b8f761c7b
4
+ data.tar.gz: b0ded97015679b02b9b2063d0fd66e942e3bad6c344738a16254b1011861ebd3
5
5
  SHA512:
6
- metadata.gz: 1ca350e098475197eba58efabd2e995a99e113c9b74504f78756e998cf38b8442af317b77ac9c93e519ce5e98c6a02e6e5dc549c6846ac1b487ffce6cdbd0d51
7
- data.tar.gz: 62c2ce631bda1ab60f14b1fd832ddda2742730699669061ca8d634b4cec297f7114dd4c5ffc552b37d3f1af925577ab661f68255a10373babaf517b5254979e2
6
+ metadata.gz: 7a94ec29c4331d7ec408934aaa7da01e0dc77508334a39ca906faf6fd43db6f22632e3d68894c10f9177ef4371aee489db7c27831462819e81160dbb13d74335
7
+ data.tar.gz: ebecc1147f69eae1d28812d64869ee82e72f6ab9db5fc79a67948004a070be0001c28e16257f9677b437b1295516b0c63e8867e1a01bd1e5130b4e6305e695b7
data/README.md CHANGED
@@ -18,7 +18,7 @@ Add your code in wrapped inside AsyncBlock as described below.
18
18
  \*\* NOTE - AsyncBlock cannot be executed from irb/console
19
19
 
20
20
  ```
21
- AsyncBlock.perform do
21
+ AsyncBlock.run do
22
22
  puts('This is running in a temporary job')
23
23
  puts('Put your code below')
24
24
  end
@@ -27,7 +27,7 @@ end
27
27
  To put some delay on the async execution (say 5 minutes):
28
28
 
29
29
  ```
30
- AsyncBlock.perform(delay: 5.minutes) do
30
+ AsyncBlock.run(delay: 5.minutes) do
31
31
  puts('This is running in a temporary job')
32
32
  puts('Put your code below')
33
33
  end
@@ -36,7 +36,7 @@ end
36
36
  To explicitly mention a queue for the async execution:
37
37
 
38
38
  ```
39
- AsyncBlock.perform(delay: 1.minute, queue: 'p3') do
39
+ AsyncBlock.run(delay: 1.minute, queue: 'p3') do
40
40
  puts('This is running in a temporary job')
41
41
  puts('Put your code below')
42
42
  end
data/async_block.gemspec CHANGED
@@ -36,6 +36,8 @@ Gem::Specification.new do |spec|
36
36
 
37
37
  # Uncomment to register a new dependency of your gem
38
38
  spec.add_dependency 'activesupport', ['>= 3.0', '< 8.0']
39
+ spec.add_dependency 'method_source', '~> 1.0'
40
+ spec.add_dependency 'sourcify', '~> 0.5.0'
39
41
 
40
42
  # For more information and examples about making a new gem, check out our
41
43
  # guide at: https://bundler.io/guides/creating_gem.html
@@ -11,6 +11,7 @@ module AsyncBlock
11
11
  def perform(source)
12
12
  block = source_to_block(source)
13
13
  execute_block!(block)
14
+ true
14
15
  end
15
16
 
16
17
  private
@@ -21,7 +22,7 @@ module AsyncBlock
21
22
  end
22
23
 
23
24
  def execute_block!(block)
24
- block.call
25
+ block&.call
25
26
  end
26
27
  end
27
28
  end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'sourcify'
4
+ require 'method_source'
5
+
3
6
  module AsyncBlock
4
7
  # BlockToSource - converts code block to source string
5
8
  # this will help in preventing writing of new jobs to run smaller pieces of code
@@ -19,7 +22,7 @@ module AsyncBlock
19
22
  private
20
23
 
21
24
  def block_to_source
22
- @block&.source
25
+ @block&.to_source(:strip_enclosure => true)
23
26
  end
24
27
  end
25
28
 
@@ -4,6 +4,8 @@ module AsyncBlock
4
4
  # Custom active job inherited from ActiveJob to enable error logging and retries
5
5
  class CustomActiveJob < ActiveJob::Base
6
6
  before_perform do |job|
7
+ message = "Starting job_id:#{job.job_id}"
8
+ puts('before_perform', message)
7
9
  context = { arguments: job.arguments.to_json }
8
10
  if Module.const_defined?(:Sentry)
9
11
  Sentry.configure_scope do |scope|
@@ -13,11 +15,19 @@ module AsyncBlock
13
15
  Honeybadger.context(context) if Module.const_defined?(:Honeybadger)
14
16
  end
15
17
 
18
+ after_perform
19
+
20
+ after_perform do |job|
21
+ message = "Executed job_id:#{job.job_id} successfully"
22
+ puts('after_perform', message)
23
+ end
24
+
16
25
  retry_on StandardError, wait: :exponentially_longer, attempts: 3 do |job, error|
17
26
  message = "Stopped retrying #{job.class} (JID #{job.job_id})
18
27
  with #{job.arguments.join(', ')} due to
19
28
  '#{error.class} - #{error.message}'.
20
29
  This job was retried for #{job.executions} times.".squish
30
+ puts('retry_on', message)
21
31
  Sentry.capture_message(message) if Module.const_defined?(:Sentry)
22
32
  Honeybadger.notify(message) if Module.const_defined?(:Honeybadger)
23
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AsyncBlock
4
- VERSION = '0.2.6'
4
+ VERSION = '0.2.8'
5
5
  end
data/lib/async_block.rb CHANGED
@@ -5,12 +5,10 @@ require_relative 'async_block/constants'
5
5
  require_relative 'async_block/block_source_service'
6
6
  require_relative 'async_block/async_wrapper_job'
7
7
 
8
- # AsyncBlock - A usable code block for rails to run your code asynchronusly,
8
+ # AsyncBlock - A usable code block for rails to run your code asynchronously,
9
9
  # this will help in preventing writing of new jobs to run smaller pieces of code
10
10
  module AsyncBlock
11
- class Error < StandardError; end
12
-
13
- def self.perform(queue: nil, delay: nil, &block)
11
+ def self.run(queue: nil, delay: nil, &block)
14
12
  source = BlockToSource.new(block).convert
15
13
  queue ||= DEFAULT_QUEUE_NAME
16
14
  if delay.instance_of?(ActiveSupport::Duration)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async_block
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adittya Dey
@@ -30,6 +30,34 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '8.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: method_source
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: sourcify
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 0.5.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 0.5.0
33
61
  description: |-
34
62
  A usable code block for rails to run your code asynchronusly, "\
35
63
  "this will help in preventing writing of new jobs to run smaller pieces of code.