console_buddy 0.1.11 → 0.1.12

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: f06e8299de73ca38c3034fe6b769da6e0abe43d5cd139495afcba9009408b1dc
4
- data.tar.gz: 9ae2d7489bf7eecd165cfa24ed388dfaf32ef9fc0a85a4402c5c6f951c0f2ae7
3
+ metadata.gz: 0504ca9ff8240411ff068b75153cebe7f89cbaa4be44bf8726be62b831cbfea9
4
+ data.tar.gz: 18bdb410d8ac32ebc4c2c8ec1687706830ab66d51ec6afa61d54d8bd9a437485
5
5
  SHA512:
6
- metadata.gz: 5bf025aac5e410b334475f5dcaab699cb5ca0692e690c686038f971595844250d772245d0f87662ed0e20b423b2c9a7fba82f12868cb267c243dcc64c32023cd
7
- data.tar.gz: ae5ff5b1c1d1fd00bfea0ae195f5d061a0c698f050c8d7530544f086114b23cac318e5250c3a243a5a95f796375bb75abcc61045e6cd9631493de064e5271b3d
6
+ metadata.gz: 2c1fa8bb7b7b3f399ddad25140108758627bfb78e0b2d569ce41221d4a4a906653c9f24ac0b42656518cc8ecc7595867b16c0d0482a8c9a7d10a1633e145ef73
7
+ data.tar.gz: 651591c77cf11cf9595df8cb8d4b7e1eca7cbbc15958f1f492452528d92f5ffe9cf03ffe466961b457a54f4d630b58d2be7a138e52ed5d15020528e6cdd30dc2
@@ -3,8 +3,10 @@
3
3
  require_relative "../one_off_job"
4
4
 
5
5
  # Example Usage: ConsoleBuddy::Jobs::Sidekiq.perform_later("foo", "bar")
6
- #
6
+ #
7
7
  # This class is used to integrate the ConsoleBuddy::OneOffJob with Sidekiq.
8
+ # Set ConsoleBuddy.one_off_job_sidekiq_queue in .console_buddy/config.rb when your
9
+ # app forbids the default queue (e.g. queue governance / Sidekiq Pro).
8
10
  module ConsoleBuddy
9
11
  module Jobs
10
12
  class Sidekiq
@@ -13,6 +15,40 @@ module ConsoleBuddy
13
15
  def perform(*args)
14
16
  ::ConsoleBuddy::OneOffJob.perform(*args)
15
17
  end
18
+
19
+ class << self
20
+ def perform_async(*args)
21
+ q = configured_sidekiq_queue
22
+ if q.present?
23
+ if respond_to?(:set)
24
+ set(queue: q).perform_async(*args)
25
+ else
26
+ push_with_queue(args, q)
27
+ end
28
+ else
29
+ super
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def configured_sidekiq_queue
36
+ return unless defined?(::ConsoleBuddy) && ::ConsoleBuddy.respond_to?(:one_off_job_sidekiq_queue)
37
+
38
+ q = ::ConsoleBuddy.one_off_job_sidekiq_queue
39
+ return if q.nil? || (q.respond_to?(:empty?) && q.empty?)
40
+
41
+ q.respond_to?(:to_sym) ? q.to_sym : q
42
+ end
43
+
44
+ def push_with_queue(args, queue)
45
+ ::Sidekiq::Client.push(
46
+ "class" => name,
47
+ "args" => args,
48
+ "queue" => queue.to_s
49
+ )
50
+ end
51
+ end
16
52
  end
17
53
  end
18
54
  end
@@ -5,6 +5,18 @@ require 'rails/railtie'
5
5
  # Load console buddy when the Rails console is started
6
6
  module ConsoleBuddy
7
7
  class Railtie < ::Rails::Railtie
8
+ # Queue linters and Sidekiq boot load worker classes without running `rails console`, so
9
+ # `.console_buddy/config.rb` never runs. Set CONSOLE_BUDDY_SIDEKIQ_QUEUE to an allowed queue name
10
+ # (e.g. in .env or your process manager) so ConsoleBuddy::Jobs::Sidekiq is not registered on `default`.
11
+ initializer "console_buddy.sidekiq_queue_from_env" do
12
+ next unless defined?(::ConsoleBuddy::Jobs::Sidekiq)
13
+
14
+ queue = ENV["CONSOLE_BUDDY_SIDEKIQ_QUEUE"].to_s.strip
15
+ next if queue.empty?
16
+
17
+ ::ConsoleBuddy::Jobs::Sidekiq.sidekiq_options queue: queue.to_sym
18
+ end
19
+
8
20
  console do
9
21
  ::ConsoleBuddy.start!
10
22
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ConsoleBuddy
4
- VERSION = "0.1.11"
4
+ VERSION = "0.1.12"
5
5
  end
data/lib/console_buddy.rb CHANGED
@@ -51,7 +51,8 @@ end
51
51
 
52
52
  module ConsoleBuddy
53
53
  class << self
54
- attr_accessor :verbose_console, :allowed_envs, :use_in_debuggers, :ignore_startup_errors, :use_in_tests, :one_off_job_service_type
54
+ attr_accessor :verbose_console, :allowed_envs, :use_in_debuggers, :ignore_startup_errors, :use_in_tests, :one_off_job_service_type,
55
+ :one_off_job_sidekiq_queue
55
56
 
56
57
  def store
57
58
  @store ||= ::ConsoleBuddy::MethodStore.new
@@ -64,6 +65,7 @@ module ConsoleBuddy
64
65
  return unless console_buddy_directory_exists?
65
66
  # Check if there is a .console_buddy/config file
66
67
  load_console_buddy_config
68
+ apply_sidekiq_queue_to_worker
67
69
 
68
70
  # Only start the buddy in the allowed environments. e.g. development, test
69
71
  return if !allowed_env?
@@ -100,6 +102,7 @@ module ConsoleBuddy
100
102
  @ignore_startup_errors = false
101
103
  @allowed_envs = %w[development test]
102
104
  @one_off_job_service_type = :inline
105
+ @one_off_job_sidekiq_queue = nil
103
106
  end
104
107
 
105
108
  # Only start the buddy in the allowed environments
@@ -146,6 +149,16 @@ module ConsoleBuddy
146
149
  end
147
150
  end
148
151
 
152
+ # Sync Sidekiq worker metadata so queue auditors and Sidekiq see a real queue (not the default queue).
153
+ def apply_sidekiq_queue_to_worker
154
+ return unless defined?(::ConsoleBuddy::Jobs::Sidekiq)
155
+
156
+ q = ConsoleBuddy.one_off_job_sidekiq_queue
157
+ return if q.blank?
158
+
159
+ ::ConsoleBuddy::Jobs::Sidekiq.sidekiq_options queue: q.to_sym
160
+ end
161
+
149
162
  # Loads all the files in the .console_buddy folder
150
163
  # .console_buddy folder should be in the root of the project
151
164
  def load_console_buddy_files
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+ require "sidekiq"
5
+ require_relative "../../../lib/console_buddy/jobs/sidekiq"
6
+
7
+ RSpec.describe ConsoleBuddy::Jobs::Sidekiq do
8
+ describe ".perform_async" do
9
+ after { ConsoleBuddy.one_off_job_sidekiq_queue = nil }
10
+
11
+ context "when ConsoleBuddy.one_off_job_sidekiq_queue is set" do
12
+ before { ConsoleBuddy.one_off_job_sidekiq_queue = :general_2m }
13
+
14
+ it "uses Sidekiq set(queue:) when available" do
15
+ setter = double("sidekiq_setter")
16
+ expect(described_class).to receive(:set).with(queue: :general_2m).and_return(setter)
17
+ expect(setter).to receive(:perform_async).with("a", 1)
18
+ described_class.perform_async("a", 1)
19
+ end
20
+ end
21
+
22
+ end
23
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console_buddy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Bowie
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2026-03-09 00:00:00.000000000 Z
12
+ date: 2026-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -201,6 +201,7 @@ files:
201
201
  - spec/console_buddy/http_request_spec.rb
202
202
  - spec/console_buddy/irb_spec.rb
203
203
  - spec/console_buddy/job_spec.rb
204
+ - spec/console_buddy/jobs/sidekiq_spec.rb
204
205
  - spec/console_buddy/method_store_spec.rb
205
206
  - spec/console_buddy/report_spec.rb
206
207
  - spec/spec_helper.rb