sidekiq-runner 0.1.6 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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