sidekiq-runner 0.1.6 → 0.2.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
- SHA1:
3
- metadata.gz: 65f6d473c59401d2c4206a1f1a5a91ac53baa55c
4
- data.tar.gz: 5d56060902cd554d9928969e995d42df9ae55803
2
+ SHA256:
3
+ metadata.gz: c8918e2e7486207c0a59ae645ec003d7ce1de255ba8e60e48ae9265e3db829b9
4
+ data.tar.gz: 7931bf1755ef7b945443ea9a6b9c73199e88b3ad5d05e0975baf9b4cd7798480
5
5
  SHA512:
6
- metadata.gz: 0c541c8fde7042c286e4c872c218f003c05b8c68e0b31272e653e47a256d62b647add742bd2448cbce71b2685d778de6275ba995e96c43ac6c6afcdfc29eabb9
7
- data.tar.gz: 81cf308cec2a49fdf3aa855595bb14220f98de69ecd574f3b713adbc9a4dc283826984b3f9710af8a14e004c82fc4de928de076c262c53e13d7c2a5da6541689
6
+ metadata.gz: cf8d8f5617fa3eea88088bc14202ccb52a252e4c2e2ba9b7c53c455a9b6929e2218668e5a1b1790c2af42246dae8572b942a65ea645b242a8b53fede15fbad99
7
+ data.tar.gz: 861b4a172a2c35d738e12b178b9550b9df09d927cf1772a1a3866fc6564ba162d3aad5cb3337a5e21742e86ad417b6d97df2c5991c015031a1db8c41e7622204
@@ -48,6 +48,17 @@ module SidekiqRunner
48
48
  end
49
49
  end
50
50
 
51
+ def self.restart(sidekiq_instances: [])
52
+ sidekiq_config = SidekiqConfiguration.get
53
+ god_config = GodConfiguration.get
54
+
55
+ return unless god_alive?(god_config)
56
+
57
+ sidekiq_config.each_key do |name|
58
+ God::CLI::Command.new('restart', god_config.options, ['', name]) if sidekiq_instances.empty? || sidekiq_instances.include?(name.to_sym)
59
+ end
60
+ end
61
+
51
62
  def self.running?
52
63
  god_alive? GodConfiguration.get
53
64
  end
@@ -86,12 +97,12 @@ module SidekiqRunner
86
97
  yield if block_given?
87
98
 
88
99
  rescue SystemExit => e
89
- cb = e.success? ? "#{action}_success_cb" : "#{action}_error_cb"
100
+ sidekiq_cb = e.success? ? "#{action}_success_cb" : "#{action}_error_cb"
90
101
  ensure
91
102
  if [:start, :stop].include? action
92
- cb = "#{action}_success_cb" unless cb
93
- cb = sidekiq_config.send(cb.to_sym)
94
- cb.call if cb
103
+ sidekiq_cb = "#{action}_success_cb" unless sidekiq_cb
104
+ sidekiq_cb = sidekiq_config.send(sidekiq_cb.to_sym)
105
+ sidekiq_cb.call if sidekiq_cb
95
106
  end
96
107
  end
97
108
  end
@@ -18,6 +18,8 @@ module SidekiqRunner
18
18
  CONFIG_FILE_ATTRIBUTES = [:process_name, :interval, :stop_timeout, :log_file, :log_level, :maximum_memory_usage, :pid]
19
19
  CONFIG_FILE_ATTRIBUTES.each { |att| attr_accessor att }
20
20
 
21
+ attr_reader :generic_watchers
22
+
21
23
  def initialize
22
24
  @process_name = 'sidekiq'
23
25
  @interval = 30
@@ -36,6 +38,12 @@ module SidekiqRunner
36
38
  # This is going to be a part of the .sock file name e.g. "/tmp/god.17165.sock" and the pidfile name
37
39
  # Change this in the configuration file to be able to run multiple instances of god.
38
40
  @port = 17165
41
+
42
+ @generic_watchers = []
43
+ end
44
+
45
+ def add_generic(&blk)
46
+ @generic_watchers << blk
39
47
  end
40
48
 
41
49
  def options
@@ -64,7 +72,7 @@ module SidekiqRunner
64
72
  end
65
73
 
66
74
  def create_directories!
67
- FileUtils.mkdir_p(File.dirname(log_file))
75
+ FileUtils.mkdir_p(File.dirname(log_file)) if log_file
68
76
  end
69
77
 
70
78
  %w(start stop).each do |action|
@@ -6,6 +6,12 @@ god_config = SidekiqRunner::GodConfiguration.get
6
6
 
7
7
  God.terminate_timeout = god_config.stop_timeout + 10
8
8
 
9
+ god_config.generic_watchers.each do |block|
10
+ God.watch do |w|
11
+ block.call(w)
12
+ end
13
+ end
14
+
9
15
  sidekiq_config.each do |name, skiq|
10
16
  God.watch do |w|
11
17
  w.name = name
@@ -13,14 +19,12 @@ sidekiq_config.each do |name, skiq|
13
19
  # Set start command.
14
20
  w.start = skiq.build_start_command
15
21
 
22
+ # Set logfile
23
+ w.log = skiq.logfile
24
+
16
25
  # Set stop command.
17
- w.stop = skiq.build_stop_command(god_config.stop_timeout)
18
26
  w.stop_timeout = god_config.stop_timeout
19
27
 
20
- # Make sure the pidfile is deleted as sidekiqctl does not delete stale pidfiles.
21
- w.pid_file = skiq.pidfile
22
- w.behavior(:clean_pid_file)
23
-
24
28
  # Set uid/gid if requested.
25
29
  w.uid = skiq.uid if skiq.uid
26
30
  w.gid = skiq.gid if skiq.gid
@@ -12,7 +12,7 @@ module SidekiqRunner
12
12
  def initialize
13
13
  @config_file =
14
14
  if defined?(Rails)
15
- File.join(Rails.root, 'config', 'sidekiq.yml')
15
+ File.join(Rails.root, 'config', 'sidekiq.yml')
16
16
  else
17
17
  File.join(Dir.pwd, 'config', 'sidekiq.yml')
18
18
  end
@@ -86,8 +86,6 @@ module SidekiqRunner
86
86
  end
87
87
 
88
88
  def merge_config_file!
89
- sidekiqs_common_config = {}
90
-
91
89
  yml = File.exist?(config_file) ? YAML.load_file(config_file) : {}
92
90
  yml = Hash[yml.map { |k, v| [k.to_sym, v] }]
93
91
 
@@ -96,8 +94,6 @@ module SidekiqRunner
96
94
 
97
95
  def sane?
98
96
  fail 'No sidekiq instances defined. Nothing to run.' if @sidekiqs.empty?
99
- fail 'Sidekiq instances with the same pidfile found.' if @sidekiqs.values.map(&:pidfile).uniq.size < @sidekiqs.size
100
- fail 'Sidekiq instances with the same logfile found.' if @sidekiqs.values.map(&:logfile).uniq.size < @sidekiqs.size
101
97
 
102
98
  @sidekiqs.each_value { |skiq| skiq.sane? }
103
99
  end
@@ -1,6 +1,5 @@
1
1
  module SidekiqRunner
2
2
  class SidekiqInstance
3
-
4
3
  RUNNER_ATTRIBUTES = [:bundle_env, :chdir, :requirefile]
5
4
  RUNNER_ATTRIBUTES.each { |att| attr_accessor att }
6
5
 
@@ -10,7 +9,7 @@ module SidekiqRunner
10
9
  attr_reader :name, :queues, :config_blocks
11
10
 
12
11
  def initialize(name)
13
- fail "No sidekiq instance name given!" if name.empty?
12
+ raise "No sidekiq instance name given!" if name.empty?
14
13
 
15
14
  @name = name
16
15
  @queues = []
@@ -30,9 +29,10 @@ module SidekiqRunner
30
29
  end
31
30
 
32
31
  def add_queue(queue_name, weight = 1)
33
- fail "Cannot add the queue. The name is empty!" if queue_name.empty?
34
- fail "Cannot add the queue. The weight is not an integer!" unless weight.is_a? Integer
35
- fail "Cannot add the queue. The queue with \"#{queue_name}\" name already exist" if @queues.any? { |q| q.first == queue_name }
32
+ raise "Cannot add the queue. The name is empty!" if queue_name.empty?
33
+ raise "Cannot add the queue. The weight is not an integer!" unless weight.is_a? Integer
34
+ raise "Cannot add the queue. The queue with \"#{queue_name}\" name already exist" if @queues.any? { |q| q.first == queue_name }
35
+
36
36
  @queues << [queue_name, weight]
37
37
  end
38
38
 
@@ -47,7 +47,7 @@ module SidekiqRunner
47
47
  end
48
48
 
49
49
  # Override with instance-specific options.
50
- if (syml = yml[@name.to_sym]) && (syml.is_a?(Hash))
50
+ if (syml = yml[@name.to_sym]) && syml.is_a?(Hash)
51
51
  syml = Hash[syml.map { |k, v| [k.to_sym, v] }]
52
52
 
53
53
  SidekiqInstance::CONFIG_FILE_ATTRIBUTES.each do |k|
@@ -57,8 +57,8 @@ module SidekiqRunner
57
57
  end
58
58
 
59
59
  def sane?
60
- fail "No queues given for #{@name}!" if @queues.empty?
61
- fail "No requirefile given for #{@name} and not in Rails environment!" if !defined?(Rails) && !requirefile
60
+ raise "No queues given for #{@name}!" if @queues.empty?
61
+ raise "No requirefile given for #{@name} and not in Rails environment!" if !defined?(Rails) && !requirefile
62
62
  end
63
63
 
64
64
  def build_start_command
@@ -66,33 +66,21 @@ module SidekiqRunner
66
66
 
67
67
  cmd = []
68
68
  cmd << 'bundle exec' if bundle_env
69
- cmd << (rbtrace ? File.expand_path('../../../script/sidekiq_rbtrace', __FILE__) : 'sidekiq')
70
- cmd << '-d'
69
+ cmd << (rbtrace ? File.expand_path('../../script/sidekiq_rbtrace', __dir__) : 'sidekiq')
71
70
  cmd << "-c #{concurrency}"
72
71
  cmd << '-v' if verbose
73
- cmd << "-L #{logfile}"
74
72
  cmd << "-P #{pidfile}"
75
73
  cmd << "-e #{Rails.env}" if defined?(Rails)
76
74
  cmd << "-r #{requirefile}" if requirefile
77
75
  cmd << "-g '#{tag}'"
78
76
 
79
77
  queues.each do |q, w|
80
- cmd << "-q #{q},#{w.to_s}"
78
+ cmd << "-q #{q},#{w}"
81
79
  end
82
80
 
83
81
  cmd.join(' ')
84
82
  end
85
83
 
86
- def build_stop_command(timeout)
87
- cmd = []
88
- cmd << (bundle_env ? 'bundle exec sidekiqctl' : 'sidekiqctl')
89
- cmd << 'stop'
90
- cmd << pidfile
91
- cmd << timeout
92
-
93
- cmd.join(' ')
94
- end
95
-
96
84
  private
97
85
 
98
86
  def create_directories!
@@ -1,3 +1,3 @@
1
1
  module SidekiqRunner
2
- VERSION = '0.1.6'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - FlavourSys Technology GmbH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-09 00:00:00.000000000 Z
11
+ date: 2021-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '10.3'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '10.3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: god
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.13'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sidekiq
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '6.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '6.0'
41
55
  description: Provide an easy way to configure, start, and monitor all your Sidekiq
42
56
  processes
43
57
  email: technology@flavoursys.com
@@ -73,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
87
  version: '0'
74
88
  requirements: []
75
89
  rubyforge_project:
76
- rubygems_version: 2.5.1
90
+ rubygems_version: 2.7.6.2
77
91
  signing_key:
78
92
  specification_version: 4
79
93
  summary: Sidekiq configuration and rake tasks