delayable 0.3.0 → 0.4.1

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: 55a2d79871eb049236cdc42534a918daa44c65fed5afeed5b1613bc296d57242
4
- data.tar.gz: ade7725c1c077376367cd57df14e1131a756c8f617f73eea4ad4f2596c866ef8
3
+ metadata.gz: c001bbe027f6b3996e3fc497c5b72a7e32a9f53fca0a6a6f4f04c928231289bc
4
+ data.tar.gz: 9978c0fa7bce102c9105abfb72d54f674e4e8795fc0331a4181d776ef4e92dbd
5
5
  SHA512:
6
- metadata.gz: 24a0abc67be8433a92c3eb1ec5fed617dd2c5cdf83295947c6dd93cef8e0817f0510670d5b2651dcdd2b5622aee2d97531dbbe9aad0b4b873e429a9db8a57089
7
- data.tar.gz: e0b85d9087ebe7d2587fb3cb14ff81b97393d57e364fea6c1a0d9f7558148253ba9a2d11b5517fc31200d3dc0ce596a4d030d9825913698ea9646b54d4238ed2
6
+ metadata.gz: ab775ae0fe6c43a1e9c59547f8837c80240d5c5ddda4cef7e7f404496b3f89dde80c838bce19350837ef7ed23eb6cf11a4f5e0741a6dc568e30a1b5fccea0964
7
+ data.tar.gz: 30e3510fa4f70edb0400fa469ada55255bf9552d6302d490b36b2878994ad58c3199b5d7ef1af86fe17dd0e3a1e3689edda6f7bd1a814de12fec95c30588474f
data/.rubocop.yml ADDED
@@ -0,0 +1,23 @@
1
+ inherit_from:
2
+ - https://raw.githubusercontent.com/trobrock/style-guides/4ed16c7/ruby-style.yml
3
+
4
+ require:
5
+ - rubocop-performance
6
+ - rubocop-rails
7
+
8
+ Rails/OutputSafety:
9
+ Enabled: false
10
+ Style/FrozenStringLiteralComment:
11
+ EnforcedStyle: never
12
+
13
+ AllCops:
14
+ TargetRailsVersion: 8.0 # Can remove this after rubocop > v1.63.5
15
+ NewCops: enable
16
+ Exclude:
17
+ - 'node_modules/**/*'
18
+ - 'vendor/**/*'
19
+ - 'db/**/*'
20
+ - db/schema.rb
21
+ - 'bin/**/*'
22
+ - Brewfile
23
+ - 'lib/generators/**/templates/**/*'
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.4.1
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
- require "bundler/setup"
1
+ require 'bundler/gem_tasks'
2
+ require 'minitest/test_task'
2
3
 
3
- load "rails/tasks/statistics.rake"
4
+ Minitest::TestTask.create
4
5
 
5
- require "bundler/gem_tasks"
6
+ task default: :test
@@ -1,3 +1,3 @@
1
1
  module Delayable
2
- VERSION = "0.3.0"
2
+ VERSION = '0.4.1'.freeze
3
3
  end
data/lib/delayable.rb CHANGED
@@ -1,12 +1,22 @@
1
- require "delayable/version"
1
+ require 'active_support/concern'
2
+ require 'active_support/core_ext/string/inflections'
3
+
4
+ require 'delayable/version'
2
5
 
3
6
  module Delayable
4
7
  extend ActiveSupport::Concern
5
8
 
9
+ included do
10
+ fail 'Please define ApplicationJob before including Delayable' unless defined?(ApplicationJob)
11
+ fail 'Please define Current before including Delayable' unless defined?(Current)
12
+ end
13
+
6
14
  class_methods do
7
15
  def delay(method_name, class_method: false, wait: nil, limits_concurrency: nil, queue: :default)
8
- job = const_set(delayable_job_name(method_name, class_method:),
9
- delayable_job_class(method_name, class_method:, concurrency_limits: limits_concurrency, queue:))
16
+ job = const_set(
17
+ delayable_job_name(method_name, class_method:),
18
+ delayable_job_class(method_name, class_method:, concurrency_limits: limits_concurrency, queue:)
19
+ )
10
20
 
11
21
  defined_wait = wait
12
22
  delayable_define_method(class_method:, method_name:) do |*arguments, **kwargs|
@@ -34,12 +44,18 @@ module Delayable
34
44
  end
35
45
 
36
46
  def delayable_job_name(method_name, class_method: false)
37
- :"#{'Class' if class_method}#{method_name.to_s.camelize}Job"
47
+ class_name = bang_method?(method_name) ? "#{method_name.to_s.chomp('!').camelize}Bang" : method_name.to_s.camelize
48
+ :"#{'Class' if class_method}#{class_name}Job"
38
49
  end
39
50
 
40
- def delayable_define_method(class_method:, method_name:, &block)
51
+ def delayable_define_method(class_method:, method_name:, &)
41
52
  define_method_type = class_method ? :define_singleton_method : :define_method
42
- public_send(define_method_type, "#{method_name}_later", &block)
53
+ method_name = bang_method?(method_name) ? "#{method_name.to_s.chomp('!')}_later!" : "#{method_name}_later"
54
+ public_send(define_method_type, method_name, &)
55
+ end
56
+
57
+ def bang_method?(method_name)
58
+ method_name.to_s.end_with?('!')
43
59
  end
44
60
  end
45
61
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trae Robrock
8
- autorequire:
9
- bindir: bin
8
+ bindir: exe
10
9
  cert_chain: []
11
- date: 2024-10-21 00:00:00.000000000 Z
10
+ date: 2025-04-25 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rails
@@ -32,6 +31,8 @@ executables: []
32
31
  extensions: []
33
32
  extra_rdoc_files: []
34
33
  files:
34
+ - ".rubocop.yml"
35
+ - ".ruby-version"
35
36
  - MIT-LICENSE
36
37
  - README.md
37
38
  - Rakefile
@@ -45,7 +46,7 @@ metadata:
45
46
  homepage_uri: https://github.com/trobrock/delayable
46
47
  source_code_uri: https://github.com/trobrock/delayable.git
47
48
  changelog_uri: https://github.com/trobrock/delayable/CHANGELOG.md
48
- post_install_message:
49
+ rubygems_mfa_required: 'true'
49
50
  rdoc_options: []
50
51
  require_paths:
51
52
  - lib
@@ -53,15 +54,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
53
54
  requirements:
54
55
  - - ">="
55
56
  - !ruby/object:Gem::Version
56
- version: '0'
57
+ version: 3.4.0
57
58
  required_rubygems_version: !ruby/object:Gem::Requirement
58
59
  requirements:
59
60
  - - ">="
60
61
  - !ruby/object:Gem::Version
61
62
  version: '0'
62
63
  requirements: []
63
- rubygems_version: 3.5.16
64
- signing_key:
64
+ rubygems_version: 3.6.2
65
65
  specification_version: 4
66
66
  summary: https://github.com/trobrock/delayable
67
67
  test_files: []