thecore_background_jobs 2.2.0 → 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: 568d3e05f92ae53386ca01b21c88412e3ea4620f4cfec052dd63bf608d715747
4
- data.tar.gz: ca70a41f78ada09bba806a0d1710aa469dafecb1c47298a23cd693d1dcbb7a9a
3
+ metadata.gz: 82d56e31e4c201976784d25f1e1c98e3a62c530b9a01b4dfcabd7893330ea637
4
+ data.tar.gz: b19cc142777c04aab1182ad8b837ac3135b1177e86107966d580720fbc56bfcc
5
5
  SHA512:
6
- metadata.gz: 55e1255ddc4070c0b09594d0407e7c75c461e1915e05cfa21638f0a081d0083151cdd3904558f97a2622e6391d6d0320a9bebfd7f3cd8dae54590bf85eb1e370
7
- data.tar.gz: e907a15c4b7a460668820a7a83a8933e99181c2174cdf64b4061c0cffa1a9ba706b3ca90ce19ef5c826795dd76e113b0aa3b9696b44d72ed7fdc140679137490
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.2.0
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: 2022-02-11 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
@@ -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