sidekiq-cron 1.5.1 → 1.12.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.
@@ -1,38 +1,41 @@
1
- # require cron poller
2
1
  require 'sidekiq/cron/poller'
3
2
 
4
3
  # For Cron we need to add some methods to Launcher
5
4
  # so look at the code bellow.
6
5
  #
7
- # we are creating new cron poller instance and
8
- # adding start and stop commands to launcher
6
+ # We are creating new cron poller instance and
7
+ # adding start and stop commands to launcher.
9
8
  module Sidekiq
10
9
  module Cron
11
10
  module Launcher
12
- # Add cron poller to launcher
11
+ DEFAULT_POLL_INTERVAL = 30
12
+
13
+ # Add cron poller to launcher.
13
14
  attr_reader :cron_poller
14
15
 
15
- # add cron poller and execute normal initialize of Sidekiq launcher
16
- def initialize(options)
17
- @cron_poller = Sidekiq::Cron::Poller.new
18
- super(options)
16
+ # Add cron poller and execute normal initialize of Sidekiq launcher.
17
+ def initialize(config, **kwargs)
18
+ config[:cron_poll_interval] = DEFAULT_POLL_INTERVAL if config[:cron_poll_interval].nil?
19
+
20
+ @cron_poller = Sidekiq::Cron::Poller.new(config) if config[:cron_poll_interval] > 0
21
+ super
19
22
  end
20
23
 
21
- # execute normal run of launcher and run cron poller
24
+ # Execute normal run of launcher and run cron poller.
22
25
  def run
23
26
  super
24
- cron_poller.start
27
+ cron_poller.start if @cron_poller
25
28
  end
26
29
 
27
- # execute normal quiet of launcher and quiet cron poller
30
+ # Execute normal quiet of launcher and quiet cron poller.
28
31
  def quiet
29
- cron_poller.terminate
32
+ cron_poller.terminate if @cron_poller
30
33
  super
31
34
  end
32
35
 
33
- # execute normal stop of launcher and stop cron poller
36
+ # Execute normal stop of launcher and stop cron poller.
34
37
  def stop
35
- cron_poller.terminate
38
+ cron_poller.terminate if @cron_poller
36
39
  super
37
40
  end
38
41
  end
@@ -40,7 +43,6 @@ module Sidekiq
40
43
  end
41
44
 
42
45
  Sidekiq.configure_server do
43
- # require Sidekiq original launcher
44
46
  require 'sidekiq/launcher'
45
47
 
46
48
  ::Sidekiq::Launcher.prepend(Sidekiq::Cron::Launcher)
@@ -0,0 +1,23 @@
1
+ it:
2
+ Job: Job
3
+ Cron: Cron
4
+ CronJobs: Cron job
5
+ EnqueueNow: Accoda
6
+ EnableAll: Attiva tutto
7
+ DisableAll: Disattiva tutto
8
+ EnqueueAll: Accoda tutto
9
+ DeleteAll: Cancella tutto
10
+ "Cron string": Cron
11
+ AreYouSureEnqueueCronJobs: Vuoi accodare TUTTI i cron job?
12
+ AreYouSureEnqueueCronJob: "Vuoi accodare il cron job '%{job}'?"
13
+ AreYouSureDeleteCronJobs: Vuoi cancellare TUTTI i cron job?
14
+ AreYouSureDeleteCronJob: "Vuoi cancellare il cron job '%{job}'?"
15
+ NoCronJobsWereFound: Nessun cron job trovato
16
+ Enable: Attiva
17
+ Disable: Disattiva
18
+ "Last enqueued": Ultimo accodamento
19
+ disabled: disattivato
20
+ enabled: attivato
21
+ NoHistoryWereFound: Nessun evento in cronologia
22
+ Description: Descrizione
23
+ Message: Payload
@@ -1,27 +1,19 @@
1
1
  require 'sidekiq'
2
2
  require 'sidekiq/cron'
3
3
  require 'sidekiq/scheduled'
4
+ require 'sidekiq/options'
4
5
 
5
6
  module Sidekiq
6
7
  module Cron
7
- POLL_INTERVAL = 30
8
-
9
- # The Poller checks Redis every N seconds for sheduled cron jobs
8
+ # The Poller checks Redis every N seconds for sheduled cron jobs.
10
9
  class Poller < Sidekiq::Scheduled::Poller
11
- def initialize
12
- Sidekiq.configure_server do |config|
13
- if config.respond_to?(:[])
14
- config[:poll_interval_average] = config[:average_scheduled_poll_interval] || POLL_INTERVAL
15
- else
16
- config.options[:poll_interval_average] = config.options[:average_scheduled_poll_interval] || POLL_INTERVAL
17
- end
18
- end
19
-
20
- if Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new("6.5.0")
21
- # Sidekiq Poller init requires a config argument
22
- super(Sidekiq)
23
- else
10
+ def initialize(config = nil)
11
+ if Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new('6.5.0')
24
12
  super
13
+ else
14
+ # Old version of Sidekiq does not accept a config argument.
15
+ @config = config
16
+ super()
25
17
  end
26
18
  end
27
19
 
@@ -32,7 +24,7 @@ module Sidekiq
32
24
  end
33
25
  rescue => ex
34
26
  # Most likely a problem with redis networking.
35
- # Punt and try again at the next interval
27
+ # Punt and try again at the next interval.
36
28
  Sidekiq.logger.error ex.message
37
29
  Sidekiq.logger.error ex.backtrace.first
38
30
  handle_exception(ex) if respond_to?(:handle_exception)
@@ -43,11 +35,15 @@ module Sidekiq
43
35
  def enqueue_job(job, time = Time.now.utc)
44
36
  job.test_and_enque_for_time! time if job && job.valid?
45
37
  rescue => ex
46
- # problem somewhere in one job
38
+ # Problem somewhere in one job.
47
39
  Sidekiq.logger.error "CRON JOB: #{ex.message}"
48
40
  Sidekiq.logger.error "CRON JOB: #{ex.backtrace.first}"
49
41
  handle_exception(ex) if respond_to?(:handle_exception)
50
42
  end
43
+
44
+ def poll_interval_average(process_count = 1)
45
+ @config[:cron_poll_interval]
46
+ end
51
47
  end
52
48
  end
53
49
  end
@@ -0,0 +1,20 @@
1
+ require 'sidekiq'
2
+ require 'sidekiq/cron/job'
3
+ require 'sidekiq/options'
4
+
5
+ Sidekiq.configure_server do |config|
6
+ schedule_file = Sidekiq::Options[:cron_schedule_file] || 'config/schedule.yml'
7
+
8
+ if File.exist?(schedule_file)
9
+ config.on(:startup) do
10
+ schedule = Sidekiq::Cron::Support.load_yaml(ERB.new(IO.read(schedule_file)).result)
11
+ if schedule.kind_of?(Hash)
12
+ Sidekiq::Cron::Job.load_from_hash!(schedule, source: "schedule")
13
+ elsif schedule.kind_of?(Array)
14
+ Sidekiq::Cron::Job.load_from_array!(schedule, source: "schedule")
15
+ else
16
+ raise "Not supported schedule format. Confirm your #{schedule_file}"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -28,11 +28,18 @@ module Sidekiq
28
28
  const
29
29
  end
30
30
 
31
- # owner is in Object, so raise
32
31
  constant.const_get(name, false)
33
32
  end
34
33
  end
35
34
  end
35
+
36
+ def self.load_yaml(src)
37
+ if Psych::VERSION > "4.0"
38
+ YAML.safe_load(src, permitted_classes: [Symbol], aliases: true)
39
+ else
40
+ YAML.load(src)
41
+ end
42
+ end
36
43
  end
37
44
  end
38
45
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sidekiq
4
4
  module Cron
5
- VERSION = "1.5.1"
5
+ VERSION = "1.12.0"
6
6
  end
7
7
  end
@@ -42,7 +42,7 @@
42
42
  <td style="<%= style %>"><%= t job.status %></td>
43
43
  <td style="<%= style %>">
44
44
  <a href="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>">
45
- <b><%= job.name %></b>
45
+ <b style="<%= style %>"><%= job.name %></b>
46
46
  </a>
47
47
  <hr style="margin:3px;border:0;">
48
48
  <small>
@@ -1,12 +1,10 @@
1
1
  module Sidekiq
2
2
  module Cron
3
3
  module WebExtension
4
-
5
4
  def self.registered(app)
6
-
7
5
  app.settings.locales << File.join(File.expand_path("..", __FILE__), "locales")
8
6
 
9
- #index page of cron jobs
7
+ # Index page of cron jobs.
10
8
  app.get '/cron' do
11
9
  view_path = File.join(File.expand_path("..", __FILE__), "views")
12
10
 
@@ -15,7 +13,7 @@ module Sidekiq
15
13
  render(:erb, File.read(File.join(view_path, "cron.erb")))
16
14
  end
17
15
 
18
- # display job detail + jid history
16
+ # Display job detail + jid history.
19
17
  app.get '/cron/:name' do
20
18
  view_path = File.join(File.expand_path("..", __FILE__), "views")
21
19
 
@@ -27,7 +25,7 @@ module Sidekiq
27
25
  end
28
26
  end
29
27
 
30
- #enque cron job
28
+ # Enqueue cron job.
31
29
  app.post '/cron/:name/enque' do
32
30
  if route_params[:name] === '__all__'
33
31
  Sidekiq::Cron::Job.all.each(&:enque!)
@@ -37,7 +35,7 @@ module Sidekiq
37
35
  redirect params['redirect'] || "#{root_path}cron"
38
36
  end
39
37
 
40
- #delete schedule
38
+ # Delete schedule.
41
39
  app.post '/cron/:name/delete' do
42
40
  if route_params[:name] === '__all__'
43
41
  Sidekiq::Cron::Job.all.each(&:destroy)
@@ -47,7 +45,7 @@ module Sidekiq
47
45
  redirect "#{root_path}cron"
48
46
  end
49
47
 
50
- #enable job
48
+ # Enable job.
51
49
  app.post '/cron/:name/enable' do
52
50
  if route_params[:name] === '__all__'
53
51
  Sidekiq::Cron::Job.all.each(&:enable!)
@@ -57,7 +55,7 @@ module Sidekiq
57
55
  redirect params['redirect'] || "#{root_path}cron"
58
56
  end
59
57
 
60
- #disable job
58
+ # Disable job.
61
59
  app.post '/cron/:name/disable' do
62
60
  if route_params[:name] === '__all__'
63
61
  Sidekiq::Cron::Job.all.each(&:disable!)
@@ -66,7 +64,6 @@ module Sidekiq
66
64
  end
67
65
  redirect params['redirect'] || "#{root_path}cron"
68
66
  end
69
-
70
67
  end
71
68
  end
72
69
  end
data/lib/sidekiq/cron.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "sidekiq/cron/job"
2
2
  require "sidekiq/cron/poller"
3
3
  require "sidekiq/cron/launcher"
4
+ require "sidekiq/cron/schedule_loader"
4
5
 
5
6
  module Sidekiq
6
7
  module Cron
@@ -0,0 +1,29 @@
1
+ require 'sidekiq'
2
+
3
+ module Sidekiq
4
+ module Options
5
+ def self.[](key)
6
+ self.config[key]
7
+ end
8
+
9
+ def self.[]=(key, value)
10
+ self.config[key] = value
11
+ end
12
+
13
+ def self.config
14
+ options_field ? Sidekiq.public_send(options_field) : Sidekiq
15
+ end
16
+
17
+ def self.options_field
18
+ return @options_field unless @options_field.nil?
19
+ sidekiq_version = Gem::Version.new(Sidekiq::VERSION)
20
+ @options_field = if sidekiq_version >= Gem::Version.new('7.0')
21
+ :default_configuration
22
+ elsif sidekiq_version >= Gem::Version.new('6.5')
23
+ false
24
+ else
25
+ :options
26
+ end
27
+ end
28
+ end
29
+ end
data/sidekiq-cron.gemspec CHANGED
@@ -5,18 +5,18 @@ require './lib/sidekiq/cron/version'
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "sidekiq-cron"
7
7
  s.version = Sidekiq::Cron::VERSION
8
-
9
- s.required_ruby_version = ">= 2.6"
10
- s.require_paths = ["lib"]
8
+ s.summary = "Scheduler/Cron for Sidekiq jobs"
9
+ s.description = "Enables to set jobs to be run in specified time (using CRON notation or natural language)"
10
+ s.homepage = "https://github.com/sidekiq-cron/sidekiq-cron"
11
11
  s.authors = ["Ondrej Bartas"]
12
- s.description = "Enables to set jobs to be run in specified time (using CRON notation)"
13
12
  s.email = "ondrej@bartas.cz"
13
+ s.licenses = ["MIT"]
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE.txt",
16
16
  "README.md"
17
17
  ]
18
- s.files = Dir.glob('lib/**/*') + Dir.glob('test/**/*') + [
19
- "Changes.md",
18
+ s.files = Dir.glob('lib/**/*') + [
19
+ "CHANGELOG.md",
20
20
  "Gemfile",
21
21
  "LICENSE.txt",
22
22
  "Rakefile",
@@ -24,18 +24,17 @@ Gem::Specification.new do |s|
24
24
  "sidekiq-cron.gemspec",
25
25
  ]
26
26
 
27
- s.homepage = "https://github.com/ondrejbartas/sidekiq-cron"
28
- s.licenses = ["MIT"]
29
- s.summary = "Sidekiq-Cron helps to add repeated scheduled jobs"
27
+ s.required_ruby_version = ">= 2.7"
30
28
 
31
- s.add_dependency("fugit", "~> 1")
32
- s.add_dependency("sidekiq", ">= 4.2.1")
29
+ s.add_dependency("fugit", "~> 1.8")
30
+ s.add_dependency("sidekiq", ">= 6")
31
+ s.add_dependency("globalid", ">= 1.0.1")
33
32
 
34
33
  s.add_development_dependency("minitest", "~> 5.15")
35
- s.add_development_dependency("mocha", "~> 1.14")
36
- s.add_development_dependency("redis-namespace", "~> 1.8")
34
+ s.add_development_dependency("mocha", "~> 2.1")
37
35
  s.add_development_dependency("rack", "~> 2.2")
38
36
  s.add_development_dependency("rack-test", "~> 1.1")
39
37
  s.add_development_dependency("rake", "~> 13.0")
40
38
  s.add_development_dependency("simplecov", "~> 0.21")
39
+ s.add_development_dependency("simplecov-cobertura", "~> 2.1")
41
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-cron
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondrej Bartas
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-10 00:00:00.000000000 Z
11
+ date: 2023-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fugit
@@ -16,70 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1'
19
+ version: '1.8'
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: '1'
26
+ version: '1.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sidekiq
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.2.1
33
+ version: '6'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 4.2.1
40
+ version: '6'
41
41
  - !ruby/object:Gem::Dependency
42
- name: minitest
42
+ name: globalid
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '5.15'
48
- type: :development
47
+ version: 1.0.1
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '5.15'
54
+ version: 1.0.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: mocha
56
+ name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.14'
61
+ version: '5.15'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.14'
68
+ version: '5.15'
69
69
  - !ruby/object:Gem::Dependency
70
- name: redis-namespace
70
+ name: mocha
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.8'
75
+ version: '2.1'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.8'
82
+ version: '2.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rack
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +136,22 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0.21'
139
- description: Enables to set jobs to be run in specified time (using CRON notation)
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov-cobertura
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '2.1'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.1'
153
+ description: Enables to set jobs to be run in specified time (using CRON notation
154
+ or natural language)
140
155
  email: ondrej@bartas.cz
141
156
  executables: []
142
157
  extensions: []
@@ -144,7 +159,7 @@ extra_rdoc_files:
144
159
  - LICENSE.txt
145
160
  - README.md
146
161
  files:
147
- - Changes.md
162
+ - CHANGELOG.md
148
163
  - Gemfile
149
164
  - LICENSE.txt
150
165
  - README.md
@@ -155,28 +170,26 @@ files:
155
170
  - lib/sidekiq/cron/launcher.rb
156
171
  - lib/sidekiq/cron/locales/de.yml
157
172
  - lib/sidekiq/cron/locales/en.yml
173
+ - lib/sidekiq/cron/locales/it.yml
158
174
  - lib/sidekiq/cron/locales/ja.yml
159
175
  - lib/sidekiq/cron/locales/pt.yml
160
176
  - lib/sidekiq/cron/locales/ru.yml
161
177
  - lib/sidekiq/cron/locales/zh-CN.yml
162
178
  - lib/sidekiq/cron/poller.rb
179
+ - lib/sidekiq/cron/schedule_loader.rb
163
180
  - lib/sidekiq/cron/support.rb
164
181
  - lib/sidekiq/cron/version.rb
165
182
  - lib/sidekiq/cron/views/cron.erb
166
183
  - lib/sidekiq/cron/views/cron_show.erb
167
184
  - lib/sidekiq/cron/web.rb
168
185
  - lib/sidekiq/cron/web_extension.rb
186
+ - lib/sidekiq/options.rb
169
187
  - sidekiq-cron.gemspec
170
- - test/integration/performance_test.rb
171
- - test/test_helper.rb
172
- - test/unit/job_test.rb
173
- - test/unit/poller_test.rb
174
- - test/unit/web_extension_test.rb
175
- homepage: https://github.com/ondrejbartas/sidekiq-cron
188
+ homepage: https://github.com/sidekiq-cron/sidekiq-cron
176
189
  licenses:
177
190
  - MIT
178
191
  metadata: {}
179
- post_install_message:
192
+ post_install_message:
180
193
  rdoc_options: []
181
194
  require_paths:
182
195
  - lib
@@ -184,15 +197,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
197
  requirements:
185
198
  - - ">="
186
199
  - !ruby/object:Gem::Version
187
- version: '2.6'
200
+ version: '2.7'
188
201
  required_rubygems_version: !ruby/object:Gem::Requirement
189
202
  requirements:
190
203
  - - ">="
191
204
  - !ruby/object:Gem::Version
192
205
  version: '0'
193
206
  requirements: []
194
- rubygems_version: 3.1.6
195
- signing_key:
207
+ rubygems_version: 3.4.10
208
+ signing_key:
196
209
  specification_version: 4
197
- summary: Sidekiq-Cron helps to add repeated scheduled jobs
210
+ summary: Scheduler/Cron for Sidekiq jobs
198
211
  test_files: []
data/Changes.md DELETED
@@ -1,111 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- ## 1.5.1
6
-
7
- - Fixes an issue that prevented the gem to work in previous Sidekiq versions (https://github.com/ondrejbartas/sidekiq-cron/pull/335)
8
-
9
- ## 1.5.0
10
-
11
- - Integrate Sidekiq v6.5 breaking changes (https://github.com/ondrejbartas/sidekiq-cron/pull/331)
12
- - Add portuguese translations (https://github.com/ondrejbartas/sidekiq-cron/pull/332)
13
-
14
- ## 1.4.0
15
-
16
- - Fix buttons order in job show view (https://github.com/ondrejbartas/sidekiq-cron/pull/302)
17
- - Dark Mode support in UI (https://github.com/ondrejbartas/sidekiq-cron/pull/317/282)
18
- - Remove invocation of deprecated Redis functionality (https://github.com/ondrejbartas/sidekiq-cron/pull/318)
19
- - Internal code cleanup (https://github.com/ondrejbartas/sidekiq-cron/pull/317)
20
- - Optimize gem size (https://github.com/ondrejbartas/sidekiq-cron/pull/322)
21
- - Fix "Show All" button on cron jobs view with Sidekiq 6.3.0+ (https://github.com/ondrejbartas/sidekiq-cron/pull/321)
22
- - Documentation updates
23
-
24
- ## 1.3.0
25
-
26
- - Add confirmation dialog when enquing jobs from UI
27
- - Start to support Sidekiq `average_scheduled_poll_interval` option (replaced `poll_interval`)
28
- - Enable to use latest fugit to parse cron notation alowing use of natural language (ie `"every 30 minutes"`)
29
- - Fix deprecation warning for Redis 4.6.x
30
- - Fix different response from Redis#exists in different Redis versions
31
- - All PRs:
32
- - https://github.com/ondrejbartas/sidekiq-cron/pull/275
33
- - https://github.com/ondrejbartas/sidekiq-cron/pull/287
34
- - https://github.com/ondrejbartas/sidekiq-cron/pull/309
35
- - https://github.com/ondrejbartas/sidekiq-cron/pull/299
36
- - https://github.com/ondrejbartas/sidekiq-cron/pull/314
37
- - https://github.com/ondrejbartas/sidekiq-cron/pull/288
38
-
39
- ## 1.2.0
40
-
41
- - Updated readme
42
- - Fix problem with Sidekiq::Launcher and requiring it when not needed
43
- - Better patching of Sidekiq::Launcher
44
- - Fixed Dockerfile
45
-
46
- ## 1.1.0
47
-
48
- - Updated readme
49
- - Fix unit tests - changed argument error when getting invalid cron format
50
- - When fallbacking old job enqueued time use `Time.parse` without format (so ruby can decide best method to parse it)
51
- - Add option `date_as_argument` which will add to your job arguments on last place `Time.now.to_f` when it was eneuqued
52
- - Add option `description` which will allow you to add notes to your jobs so in web view you can see it
53
- - Fixed translations
54
-
55
- ## 1.0.4
56
-
57
- - Fix problem with upgrading to 1.0.x - parsing last enqued time didn't count with old time format stored in Redis
58
-
59
- ## 1.0.0
60
-
61
- - Use [fugit](https://github.com/floraison/fugit) instead of [rufus-scheduler](https://github.com/jmettraux/rufus-scheduler) - API of cron didn't change (rufus scheduler is using fugit)
62
- - Better working with Timezones
63
- - Translations for JA, zh-CN
64
- - Cron without timezone are considered as UTC, to add Timezone to cron use format `* * * * * Europe/Berlin`
65
- - Be aware that this release can change when your jobs are enqueued (for me it didn't change but it is in one project, in other it can shift by different timezone setup)
66
-
67
- ## 0.6.0
68
-
69
- - Set poller to check jobs every 30s by default (possible to override by `Sidekiq.options[:poll_interval] = 10`)
70
- - Add group actions (enqueue, enable, disable, delete) all in web view
71
- - Fix poller to enqueu all jobs in poll start time
72
- - Add performance test for enqueue of jobs (10 000 jobs in less than 19s)
73
- - Fix problem with default queue
74
- - Remove redis-namespace from dependencies
75
- - Update ruby versions in travis
76
-
77
- ## 0.5.0
78
-
79
- - Add Docker support
80
- - All crons are now evaluated in UTC
81
- - Fix rufus scheduler & timezones problems
82
- - Add support for Sidekiq 4.2.1
83
- - Fix readme
84
- - Add Russian locale
85
- - User Rack.env in tests
86
- - Faster enqueue of jobs
87
- - Permit to use ActiveJob::Base.queue_name_delimiter
88
- - Fix problem with multiple times enqueue #84
89
- - Fix problem with enqueue of unknown class
90
-
91
- ## 0.4.0
92
-
93
- - Enable to work with Sidekiq >= 4.0.0
94
- - Fix readme
95
-
96
- ## 0.3.1
97
-
98
- - Add CSRF tags to forms so it will work with Sidekiq >= 3.4.2
99
- - Remove Tilt dependency
100
-
101
- ## 0.3.0
102
-
103
- - Suport for Active Job
104
- - Sidekiq cron web ui needs to be loaded by: require 'sidekiq/cron/web'
105
- - Add load_from_hash! and load_from_array! which cleanup jobs before adding new ones
106
-
107
- ## 0.1.1
108
-
109
- - Add Web front-end with enabled/disable job, enqueue now, delete job
110
- - Add cron poller - enqueue cron jobs
111
- - Add cron job - save all needed data to Redis