skiplock 1.1.5 → 1.1.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: 251899d30b6c22a82be564d61da33bca7734fd67516eec5d6cc122ebde93ccaa
4
- data.tar.gz: fa090c287d2f3fcbe03a45a324832d4d5a1fa800e26c26deb40091789c712df5
3
+ metadata.gz: 2ff56b97e28d0f5b162dfb538e33461569af6aa19ba062a85d7efb4ad0d129f2
4
+ data.tar.gz: 32472f59ee0ed8422fadfa52bb4cb59a15518c0211d58f562006748e30a1d72c
5
5
  SHA512:
6
- metadata.gz: bd62845a436ea37e27da889beecec6f2b16b4d3be745c3d336da4a3a9aacf34867e586e9ecb186e816e9784969dfee754d1fccb3e0ba8dedb8d63fada1eb9304
7
- data.tar.gz: ef58e25457ac5ef98c385d122ca3252b161ddf62a589cfefb04286aaec5c2def0f52b6b334e554e8451adfe044f7be7c010a00d9c42a801731e6a7a6b3c5836d
6
+ metadata.gz: 3b1a4e1314d300ae26e93f77256c6d543d46a425a44ab12d20b07e6c14e5d8d070db8cab532e6fd0fcb0b636fdde7cbee78aff65651e2ee9694b2eab03bfc276
7
+ data.tar.gz: e549e1db28766922325f8ef7b3b59e205df5bc6a6a5b3ca5b40899861c6baf732d973144aa0de2a09bc4d0fa42dc2fe3ec45958696fbbcb93fd60a8bc8b866cc
data/README.md CHANGED
@@ -54,8 +54,10 @@ The library is quite small compared to other PostgreSQL job queues (eg. *delay_j
54
54
  min_threads: 1
55
55
  max_threads: 10
56
56
  max_retries: 20
57
- logfile: skiplock.log
58
- loglevel: info
57
+ log_file: skiplock.log
58
+ log_level: info
59
+ log_count: 5
60
+ log_size: 10485760
59
61
  namespace:
60
62
  notification: custom
61
63
  extensions: false
@@ -70,8 +72,10 @@ The library is quite small compared to other PostgreSQL job queues (eg. *delay_j
70
72
  - **min_threads** (*integer*): sets minimum number of threads staying idle
71
73
  - **max_threads** (*integer*): sets the maximum number of threads allowed to run jobs
72
74
  - **max_retries** (*integer*): sets the maximum attempt a job will be retrying before it is marked expired. See `Retry system` for more details
73
- - **logfile** (*string*): filename for skiplock logs; empty logfile will disable logging
74
- - **loglevel** (*string*): sets logging level (`debug, info, warn, error, fatal, unknown`)
75
+ - **log_file** (*string*): filename for skiplock logs; empty logfile will disable logging
76
+ - **log_level** (*string*): sets logging level (`debug, info, warn, error, fatal, unknown`)
77
+ - **log_count** (*integer*): number of log files to keep (ie: log rotation)
78
+ - **log_size** (*integer*): maximum size per log file (in bytes)
75
79
  - **namespace** (*string*): sets namespace for jobs (workers will only process jobs of specified namespace)
76
80
  - **notification** (*string*): sets the library to be used for notifying errors and exceptions (`auto, airbrake, bugsnag, exception_notification, custom`); using `auto` will detect library if available. See `Notification system` for more details
77
81
  - **extensions** (*multi*): enable or disable the class method extension. See `ClassMethod extension` for more details
data/bin/skiplock CHANGED
@@ -6,8 +6,10 @@ begin
6
6
  op = OptionParser.new do |opts|
7
7
  opts.banner = "Usage: #{File.basename($0)} [options]"
8
8
  opts.on('-e', '--environment STRING', String, 'Rails environment')
9
- opts.on('-l', '--logfile STRING', String, 'Log filename')
10
- opts.on('-L', '--loglevel STRING', String, 'Log level (debug, info, warn, error, fatal, unknown)')
9
+ opts.on('-l', '--log-file STRING', String, 'Log filename')
10
+ opts.on('-L', '--log-level STRING', String, 'Log level (debug, info, warn, error, fatal, unknown)')
11
+ opts.on('-m', '--log-count NUM', Integer, 'Log maximum count (default = 5)')
12
+ opts.on('-M', '--log-size NUM', Integer, 'Log maximum size (in bytes, default = 10485760)')
11
13
  opts.on('-n', '--namespace STRING', String, 'Job namespace')
12
14
  opts.on('-s', '--graceful-shutdown NUM', Integer, 'Number of seconds to wait for graceful shutdown')
13
15
  opts.on('-r', '--max-retries NUM', Integer, 'Number of maxixum retries')
data/lib/skiplock/cron.rb CHANGED
@@ -3,6 +3,7 @@ module Skiplock
3
3
  class Cron
4
4
  def self.setup
5
5
  cronjobs = []
6
+ Rails.application.eager_load!
6
7
  ActiveJob::Base.descendants.each do |j|
7
8
  next unless j.const_defined?('CRON')
8
9
  cron = j.const_get('CRON')
data/lib/skiplock/job.rb CHANGED
@@ -108,7 +108,6 @@ module Skiplock
108
108
  def execute(purge_completion: true, max_retries: 20)
109
109
  raise 'Job has already been completed' if self.finished_at
110
110
  self.update_columns(running: true, updated_at: Time.now) unless self.running
111
- Skiplock.logger.info("[Skiplock] Performing #{self.job_class} (#{self.id}) from queue '#{self.queue_name || 'default'}'...") if Skiplock.logger
112
111
  self.data ||= {}
113
112
  self.data.delete('result')
114
113
  self.exception_executions ||= {}
@@ -141,7 +140,6 @@ module Skiplock
141
140
  target, method_name = ::YAML.load(self.data['arguments'].first)
142
141
  job_name = "'#{target.name}.#{method_name}'"
143
142
  end
144
- Skiplock.logger.info "[Skiplock] Performed #{job_name} (#{self.id}) from queue '#{self.queue_name || 'default'}' in #{end_time - start_time} seconds"
145
143
  end
146
144
  end
147
145
  self.exception || self.activejob_error || self.data['result']
@@ -4,15 +4,7 @@ module Skiplock
4
4
  @config = Skiplock::DEFAULT_CONFIG.dup
5
5
  @config.merge!(YAML.load_file('config/skiplock.yml')) rescue nil
6
6
  @config.symbolize_keys!
7
- Rails.application.eager_load! if Rails.env.development?
8
- if @config[:extensions] == true
9
- Module.__send__(:include, Skiplock::Extension)
10
- elsif @config[:extensions].is_a?(Array)
11
- @config[:extensions].each { |n| n.constantize.__send__(:extend, Skiplock::Extension) if n.safe_constantize }
12
- end
13
- ActiveJob::Base.__send__(:include, Skiplock::Patch)
14
- Skiplock.namespace = @config[:namespace]
15
- (caller.any?{ |l| l =~ %r{/rack/} } && @config[:workers] == 0) ? async : Cron.setup
7
+ async if (caller.any?{ |l| l =~ %r{/rack/} } && @config[:workers] == 0)
16
8
  end
17
9
 
18
10
  def async
@@ -85,8 +77,12 @@ module Skiplock
85
77
  @logger.info " Max threads: #{@config[:max_threads]}"
86
78
  @logger.info " Environment: #{Rails.env}"
87
79
  @logger.info " Namespace: #{@config[:namespace] || '(nil)'}"
88
- @logger.info " Loglevel: #{@config[:loglevel]}"
89
- @logger.info " Logfile: #{@config[:logfile] || '(disabled)'}"
80
+ @logger.info " Log level: #{@config[:log_level]}"
81
+ if @config[:log_file]
82
+ @logger.info " Log count: #{@config[:log_count]}"
83
+ @logger.info " Log size: #{@config[:log_size]}"
84
+ end
85
+ @logger.info " Log file: #{@config[:log_file] || '(disabled)'}"
90
86
  @logger.info " Workers: #{@config[:workers]}"
91
87
  @logger.info " Queues: #{@config[:queues].map {|k,v| k + '(' + v.to_s + ')'}.join(', ')}" if @config[:queues].is_a?(Hash)
92
88
  @logger.info " PID: #{Process.pid}"
@@ -95,6 +91,13 @@ module Skiplock
95
91
  end
96
92
 
97
93
  def configure
94
+ if @config[:extensions] == true
95
+ Module.__send__(:include, Skiplock::Extension)
96
+ elsif @config[:extensions].is_a?(Array)
97
+ @config[:extensions].each { |n| n.constantize.__send__(:extend, Skiplock::Extension) if n.safe_constantize }
98
+ end
99
+ ActiveJob::Base.__send__(:include, Skiplock::Patch)
100
+ Skiplock.namespace = @config[:namespace]
98
101
  @hostname = "#{`hostname -f`.strip}|#{Socket.ip_address_list.reject(&:ipv4_loopback?).reject(&:ipv6?).map(&:ip_address).join('|')}"
99
102
  @config.transform_values! {|v| v.is_a?(String) ? v.downcase : v}
100
103
  @config[:graceful_shutdown] = 300 if @config[:graceful_shutdown] > 300
@@ -140,21 +143,21 @@ module Skiplock
140
143
  end
141
144
 
142
145
  def setup_logger
143
- @config[:loglevel] = 'info' unless ['debug','info','warn','error','fatal','unknown'].include?(@config[:loglevel].to_s)
146
+ @config[:log_level] = 'info' unless ['debug','info','warn','error','fatal','unknown'].include?(@config[:log_level].to_s)
144
147
  if defined?(ActiveSupport::BroadcastLogger)
145
148
  @logger = ActiveSupport::BroadcastLogger.new(::Logger.new(STDOUT))
146
149
  else
147
150
  @logger = ActiveSupport::Logger.new(STDOUT)
148
151
  end
149
- @logger.level = @config[:loglevel].to_sym
152
+ @logger.level = @config[:log_level].to_sym
150
153
  Skiplock.logger = @logger
151
- if @config[:logfile].to_s.length > 0
154
+ if @config[:log_file].to_s.length > 0
152
155
  if defined?(ActiveSupport::BroadcastLogger)
153
- @logger.broadcast_to(::Logger.new(File.join(Rails.root, 'log', @config[:logfile].to_s), 'daily'))
156
+ @logger.broadcast_to(::Logger.new(File.join(Rails.root, 'log', @config[:log_file].to_s), @config[:log_count] || 5, @config[:log_size] || 10485760))
154
157
  else
155
- @logger.extend(ActiveSupport::Logger.broadcast(::Logger.new(File.join(Rails.root, 'log', @config[:logfile].to_s), 'daily')))
158
+ @logger.extend(ActiveSupport::Logger.broadcast(::Logger.new(File.join(Rails.root, 'log', @config[:log_file].to_s), @config[:log_count] || 5, @config[:log_size] || 10485760)))
156
159
  end
157
- ActiveJob::Base.logger = nil
160
+ ActiveJob::Base.logger = @logger
158
161
  end
159
162
  if @config[:standalone]
160
163
  if defined?(ActiveSupport::BroadcastLogger)
@@ -1,4 +1,3 @@
1
1
  module Skiplock
2
- VERSION = Version = '1.1.5'
2
+ VERSION = Version = '1.1.8'
3
3
  end
4
-
data/lib/skiplock.rb CHANGED
@@ -11,7 +11,7 @@ require 'skiplock/worker'
11
11
  require 'skiplock/version'
12
12
 
13
13
  module Skiplock
14
- DEFAULT_CONFIG = { 'graceful_shutdown' => 15, 'min_threads' => 1, 'max_threads' => 10, 'max_retries' => 20, 'logfile' => 'skiplock.log', 'loglevel' => 'info', 'namespace' => nil, 'notification' => 'custom', 'extensions' => false, 'purge_completion' => true, 'queues' => { 'default' => 100, 'mailers' => 999 }, 'workers' => 0 }.freeze
14
+ DEFAULT_CONFIG = { 'graceful_shutdown' => 15, 'min_threads' => 1, 'max_threads' => 10, 'max_retries' => 20, 'log_file' => 'skiplock.log', 'log_level' => 'info', 'log_count' => 5, 'log_size' => 10485760, 'namespace' => nil, 'notification' => 'custom', 'extensions' => false, 'purge_completion' => true, 'queues' => { 'default' => 100, 'mailers' => 999 }, 'workers' => 0 }.freeze
15
15
 
16
16
  def self.logger=(l)
17
17
  @logger = l
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skiplock
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tin Vo
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-12 00:00:00.000000000 Z
11
+ date: 2024-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -94,7 +94,7 @@ homepage: https://github.com/vtt/skiplock
94
94
  licenses:
95
95
  - MIT
96
96
  metadata: {}
97
- post_install_message:
97
+ post_install_message:
98
98
  rdoc_options: []
99
99
  require_paths:
100
100
  - lib
@@ -109,8 +109,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  requirements: []
112
- rubygems_version: 3.4.10
113
- signing_key:
112
+ rubygems_version: 3.5.16
113
+ signing_key:
114
114
  specification_version: 4
115
115
  summary: ActiveJob Queue Adapter for PostgreSQL
116
116
  test_files: []