thecore_background_jobs 2.1.4 → 2.2.1

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
2
  SHA256:
3
- metadata.gz: 25822f9c80f3f04065323e8a959852aacff9a4d8fa9bc81997e8c4a3e9208b2b
4
- data.tar.gz: 3c1b4fe01ac7612d52e45e87774df6ae8b5de26d463c0d98b1a13db31bc70fef
3
+ metadata.gz: 82d56e31e4c201976784d25f1e1c98e3a62c530b9a01b4dfcabd7893330ea637
4
+ data.tar.gz: b19cc142777c04aab1182ad8b837ac3135b1177e86107966d580720fbc56bfcc
5
5
  SHA512:
6
- metadata.gz: 914a95a8a3ae73a3436bb93ce3bac566d5895ae6e8fb553a5efc88ccd44da26bfdb6c9c57df0594b07bb4d69c7459ef0824e38c7a717961733df03294da5feb1
7
- data.tar.gz: 2c11d53d3822056e05e047f01af74c5e9ec2e48c8a78edef97a6272761649c93096aac4183d42e60cd3cf080bf11d9d03c210f8654dc83470d07380cf5097894
6
+ metadata.gz: a87ee9329bb3412c8c3e849fe6ad7ca78abc8a824c2ff315c9ba755a83cbb72bf33803ce0d66ad185e8084922de3d26e3286a4bd641506042398c7813840e933
7
+ data.tar.gz: 7ed11c0f63c76547e0a493e23b295c97419e8fe39df06e6f6500735c269981649d823c634c283829fc664c920441fe5510162b0a998d6308f26d7d923b9d01ca
@@ -0,0 +1,10 @@
1
+ Rails.application.configure do
2
+ config.after_initialize do
3
+ ThecoreBackgroundJobs.update_cron_schedules
4
+ # Good place for sending concerns about modules
5
+ # i.e.
6
+ # ModelName.send(:include, ModelNameConcern)
7
+ # - ModelNameConcern can be defined in config/initializers folder in order to be sure it's automatically loaded during engine bootstrap
8
+ ThecoreSettings::Setting.send(:include, ThecoreBackgroundSettingsConcern)
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ require 'active_support/concern'
2
+
3
+ module ThecoreBackgroundSettingsConcern
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ after_save :reload_schedules, if: :saved_change_to_raw?
7
+
8
+ def reload_schedules
9
+ # Reload changes to schedule
10
+ ThecoreBackgroundJobs.update_cron_schedules if self.ns == "schedules" && !self.raw.blank?
11
+ end
12
+ end
13
+ end
@@ -15,4 +15,46 @@ module ThecoreBackgroundJobs
15
15
  delivery_options.merge!({authentication: Settings.ns(:smtp).authentication}) unless Settings.ns(:smtp).authentication.blank?
16
16
  delivery_options
17
17
  end
18
+
19
+ def self.update_cron_schedules
20
+ # {
21
+ # "AlertForLongTermStockJob"=>{"cron"=>"0 0 9 * * *", "queue"=>"notset_default", "description"=>"This job Alerts a reference email for items in stock for too long", "enabled"=>true, "class"=>"AlertForLongTermStockJob"},
22
+ # "ScheduleEmployeeReminderForInStockParcelsJob"=>{"cron"=>"0 0 8,14 * * *", "queue"=>"notset_default", "description"=>"This job checks periodically for new received parcels", "enabled"=>true, "class"=>"ScheduleEmployeeReminderForInStockParcelsJob"}
23
+ # }
24
+ Sidekiq.get_all_schedules.each_pair do |key, config|
25
+ puts "Key: #{key}, Config: #{config}"
26
+ schedule = "cron_for_#{key.underscore}"
27
+ setting = ThecoreSettings::Setting.where(ns: "schedules", key: schedule).pluck(:raw).first
28
+ puts "Setting is #{schedule} = #{setting}"
29
+ # Installing initial sidekiq.yml configuration if setting is not present
30
+ if setting.blank?
31
+ puts "Setting #{schedule} doesn't exist, creating based on current value: #{config["cron"]}"
32
+ ThecoreSettings::Setting.create(ns: "schedules", key: schedule, raw: config["cron"])
33
+ # Settings.ns("schedules").send("#{schedule}=", config["cron"])
34
+ elsif config["cron"].squeeze(" ").strip != setting.squeeze(" ").strip
35
+ # If we have a setting and is different from the currently loaded, then replace it
36
+ # in scheduler configuration
37
+ puts "Setting #{schedule} exists: #{setting}"
38
+ begin
39
+ puts "Setting the schedule from DB value in Setting"
40
+ Sidekiq.set_schedule(key.underscore, { cron: setting.squeeze(" ").strip, queue: "#{ENV["COMPOSE_PROJECT_NAME"]}_default", class: key })
41
+ puts "Reloading schedules"
42
+ SidekiqScheduler::Scheduler.instance.reload_schedule!
43
+ rescue => exception
44
+ puts exception.message
45
+ end
46
+ end
47
+ end
48
+ # check_in_stock_parcels = ThecoreSettings::Setting.where(ns: "schedules", key: "cron_for_check_in_stock_parcels").pluck(:raw).first
49
+ # unless check_in_stock_parcels.blank?
50
+ # begin
51
+ # puts "Setting the schedule during initialization"
52
+ # Sidekiq.set_schedule('check_in_stock_parcels', { cron: check_in_stock_parcels, queue: "#{ENV["COMPOSE_PROJECT_NAME"]}_default", class: 'ScheduleEmployeeReminderForInStockParcelsJob' })
53
+ # puts "Reloading schedules during initialization"
54
+ # SidekiqScheduler::Scheduler.instance.reload_schedule!
55
+ # rescue => exception
56
+ # puts exception.message
57
+ # end
58
+ # end
59
+ end
18
60
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thecore_background_jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriele Tassoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-27 00:00:00.000000000 Z
11
+ date: 2022-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thecore_backend_commons
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.4'
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: '2.0'
26
+ version: '2.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: redis-namespace
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -91,7 +91,9 @@ files:
91
91
  - README.md
92
92
  - Rakefile
93
93
  - app/workers/demo_worker.rb
94
+ - config/initializers/after_initialize_for_thecore_backgrond_commons.rb
94
95
  - config/initializers/sidekiq-thecore.rb
96
+ - config/initializers/thecore_background_settings_concern.rb
95
97
  - config/routes.rb
96
98
  - lib/admin_constraint.rb
97
99
  - lib/tasks/thecore_background_jobs_tasks.rake