delayed_job_master 2.0.0 → 2.0.3

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: 90f6ec1ebe00243f5d69adf6a92a6e2716772b7a9af68b7301220bae2cfc55d7
4
- data.tar.gz: 30db6bc4a8183622514a9e4fcad3f5130e3061cff0bb973b834e5e0c9db5ffb0
3
+ metadata.gz: 2352f0e35b9bf06ef9362e797ea35d8b848583d03d8aea62235497dc8b938cc9
4
+ data.tar.gz: 205e1a4b04a8ad361ff0122acc65bcaa02439eaf5bbe91a258652dfa02d79eb9
5
5
  SHA512:
6
- metadata.gz: 6958a025ee232142b6a3049b25ea62075a08dea1446ddc0b29ee3f26d5ef1dd9351e6df46a2ad2a8d8068238e44a84bce6140639ff62aa8a0c8f2ad0ba43c2fe
7
- data.tar.gz: c863131bde412c128fc3f144fd5ba1bb472cd8850a0c31a32d0500e043572e389ce7184c6a98a0b57de31bd5c434601c5641c64ea00b7a7db1a41bd11095f4dc
6
+ metadata.gz: f02b0683502467943f0e1e81543705b7d69febdcf22a846d05525a95fa13844552c6d3215df4f2b87fbfdf859d9178eb18350d746a8f92743752ac0cfa2f44f2
7
+ data.tar.gz: 104a01e051fce6f6fba061c38e1674a8c3a8bd23d9ae367399a9825fc0a560fc8657dd863d6dca053c734761b93160d70b50c5356343ec12320b572b8937f019
@@ -0,0 +1,61 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ runs-on: ubuntu-20.04
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ruby: [2.3, 2.4, 2.5, 2.6, 2.7, '3.0', 3.1]
12
+ gemfile: ['rails50', 'rails51', 'rails52', 'rails60', 'rails61', 'rails70']
13
+ exclude:
14
+ - ruby: 2.3
15
+ gemfile: rails60
16
+ - ruby: 2.3
17
+ gemfile: rails61
18
+ - ruby: 2.3
19
+ gemfile: rails70
20
+ - ruby: 2.4
21
+ gemfile: rails60
22
+ - ruby: 2.4
23
+ gemfile: rails61
24
+ - ruby: 2.4
25
+ gemfile: rails70
26
+ - ruby: 2.5
27
+ gemfile: rails70
28
+ - ruby: 2.6
29
+ gemfile: rails70
30
+ - ruby: 3.0
31
+ gemfile: rails50
32
+ - ruby: 3.0
33
+ gemfile: rails51
34
+ - ruby: 3.0
35
+ gemfile: rails52
36
+ - ruby: 3.1
37
+ gemfile: rails50
38
+ - ruby: 3.1
39
+ gemfile: rails51
40
+ - ruby: 3.1
41
+ gemfile: rails52
42
+
43
+ name: ruby ${{ matrix.ruby }}, ${{ matrix.gemfile }}
44
+
45
+ env:
46
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
47
+
48
+ steps:
49
+ - uses: actions/checkout@v2
50
+ - uses: ruby/setup-ruby@v1
51
+ with:
52
+ ruby-version: ${{ matrix.ruby }}
53
+ bundler-cache: true
54
+ - name: Prepare test
55
+ run: |
56
+ cd spec/dummy
57
+ BUNDLE_GEMFILE=../../${{ env.BUNDLE_GEMFILE }} RAILS_ENV=test bundle exec rake dbs:migrate
58
+ cd ../..
59
+ - name: Run test
60
+ run: |
61
+ bundle exec rspec
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.0.3
4
+
5
+ * Fix database config detection for rails 7.0.
6
+
7
+ ## 2.0.2
8
+
9
+ * Force establish_connection after fork.
10
+
11
+ ## 2.0.1
12
+
13
+ * Force file reopen mode to `a+`.
14
+ * Set empty array for default `queues` config.
15
+ * Support to configure worker's option as false. (flavono123, #8)
16
+
3
17
  ## 2.0.0
4
18
 
5
19
  * Support multiple databases.
@@ -2,5 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem "delayed_job_active_record", "~> 4.1.0"
4
4
  gem "rails", "~> 6.0.0"
5
+ gem "psych", "~> 3.3.0"
5
6
 
6
7
  gemspec path: "../"
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem "rails", "~> 6.1.0"
4
+
5
+ gemspec path: "../"
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem "rails", "~> 7.0.1"
4
+
5
+ gemspec path: "../"
@@ -21,7 +21,7 @@ module Delayed
21
21
  end
22
22
 
23
23
  def add_worker
24
- worker = WorkerSetting.new(id: @workers.size, count: 1, exit_on_complete: true)
24
+ worker = WorkerSetting.new(id: @workers.size, queues: [], count: 1, exit_on_complete: true)
25
25
  yield worker
26
26
  @workers << worker
27
27
  end
@@ -36,7 +36,7 @@ module Delayed
36
36
 
37
37
  SIMPLE_CONFIGS.each do |key|
38
38
  define_method(key) do |value = nil|
39
- if value
39
+ if !value.nil?
40
40
  @data[key] = value
41
41
  else
42
42
  @data[key]
@@ -72,7 +72,7 @@ module Delayed
72
72
 
73
73
  SIMPLE_CONFIGS.each do |key|
74
74
  define_method(key) do |value = nil|
75
- if value
75
+ if !value.nil?
76
76
  @data[key] = value
77
77
  else
78
78
  @data[key]
@@ -0,0 +1,37 @@
1
+ module Delayed
2
+ class Master
3
+ class DatabaseDetector
4
+ def initialize
5
+ end
6
+
7
+ def call
8
+ load_spec_names.select { |spec_name| has_delayed_job_table?(spec_name) }
9
+ end
10
+
11
+ private
12
+
13
+ def load_spec_names
14
+ if Rails::VERSION::MAJOR >= 6
15
+ load_spec_names_from_multi_db_config
16
+ else
17
+ [Rails.env.to_sym]
18
+ end
19
+ end
20
+
21
+ def load_spec_names_from_multi_db_config
22
+ configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env)
23
+ configs.reject!(&:replica?)
24
+ if Rails::VERSION::MAJOR == 6
25
+ configs.map { |c| c.spec_name.to_sym }
26
+ else
27
+ configs.map { |c| c.name.to_sym }
28
+ end
29
+ end
30
+
31
+ def has_delayed_job_table?(spec_name)
32
+ ActiveRecord::Base.establish_connection(spec_name)
33
+ ActiveRecord::Base.connection.tables.include?('delayed_jobs')
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative 'job_counter'
2
+ require_relative 'database_detector'
2
3
 
3
4
  module Delayed
4
5
  class Master
@@ -52,34 +53,18 @@ module Delayed
52
53
  prc = @config.after_fork
53
54
  @config.after_fork do |master, worker|
54
55
  prc.call(master, worker)
55
- if worker.database && ActiveRecord::Base.connection_pool.spec.name != worker.database.to_s
56
- ActiveRecord::Base.establish_connection(worker.database)
57
- end
56
+ ActiveRecord::Base.establish_connection(worker.database) if worker.database
58
57
  end
59
58
  end
60
59
 
61
60
  def target_spec_names
62
61
  if @config.databases.nil? || @config.databases.empty?
63
- load_spec_names.select { |spec_name| has_delayed_job_table?(spec_name) }
62
+ DatabaseDetector.new.call
64
63
  else
65
64
  @config.databases
66
65
  end
67
66
  end
68
67
 
69
- def load_spec_names
70
- if Rails::VERSION::MAJOR >= 6
71
- configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env)
72
- configs.reject(&:replica?).map { |c| c.spec_name.to_sym }
73
- else
74
- [Rails.env.to_sym]
75
- end
76
- end
77
-
78
- def has_delayed_job_table?(spec_name)
79
- ActiveRecord::Base.establish_connection(spec_name)
80
- ActiveRecord::Base.connection.tables.include?('delayed_jobs')
81
- end
82
-
83
68
  def find_jobs_in_db(spec_name)
84
69
  counter = JobCounter.new(model_for(spec_name))
85
70
 
@@ -6,7 +6,7 @@ module Delayed
6
6
  def reopen
7
7
  ObjectSpace.each_object(File) do |file|
8
8
  next if file.closed? || !file.sync
9
- file.reopen file.path
9
+ file.reopen file.path, 'a+'
10
10
  file.sync = true
11
11
  file.flush
12
12
  end
@@ -1,5 +1,5 @@
1
1
  module Delayed
2
2
  class Master
3
- VERSION = "2.0.0"
3
+ VERSION = "2.0.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed_job_master
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshikazu Kaneta
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-08 00:00:00.000000000 Z
11
+ date: 2022-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: delayed_job
@@ -129,9 +129,9 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
+ - ".github/workflows/ci.yml"
132
133
  - ".gitignore"
133
134
  - ".rspec"
134
- - ".travis.yml"
135
135
  - CHANGELOG.md
136
136
  - CODE_OF_CONDUCT.md
137
137
  - Gemfile
@@ -143,9 +143,12 @@ files:
143
143
  - gemfiles/rails51.gemfile
144
144
  - gemfiles/rails52.gemfile
145
145
  - gemfiles/rails60.gemfile
146
+ - gemfiles/rails61.gemfile
147
+ - gemfiles/rails70.gemfile
146
148
  - lib/delayed/master.rb
147
149
  - lib/delayed/master/command.rb
148
150
  - lib/delayed/master/config.rb
151
+ - lib/delayed/master/database_detector.rb
149
152
  - lib/delayed/master/forker.rb
150
153
  - lib/delayed/master/job_checker.rb
151
154
  - lib/delayed/master/job_counter.rb
@@ -181,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
184
  - !ruby/object:Gem::Version
182
185
  version: '0'
183
186
  requirements: []
184
- rubygems_version: 3.0.3
187
+ rubygems_version: 3.3.3
185
188
  signing_key:
186
189
  specification_version: 4
187
190
  summary: A simple delayed_job master process to control multiple workers
data/.travis.yml DELETED
@@ -1,23 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.3
4
- - 2.4
5
- - 2.5
6
- - 2.6
7
- gemfile:
8
- - gemfiles/rails50.gemfile
9
- - gemfiles/rails51.gemfile
10
- - gemfiles/rails52.gemfile
11
- - gemfiles/rails60.gemfile
12
- matrix:
13
- exclude:
14
- - rvm: 2.3
15
- gemfile: gemfiles/rails60.gemfile
16
- - rvm: 2.4
17
- gemfile: gemfiles/rails60.gemfile
18
- before_script:
19
- - cd spec/dummy
20
- - bundle exec rake dbs:migrate RAILS_ENV=test
21
- - cd ../..
22
- script:
23
- - bundle exec rspec