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 +4 -4
- data/lib/console_buddy/jobs/sidekiq.rb +37 -1
- data/lib/console_buddy/railtie.rb +12 -0
- data/lib/console_buddy/version.rb +1 -1
- data/lib/console_buddy.rb +14 -1
- data/spec/console_buddy/jobs/sidekiq_spec.rb +23 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0504ca9ff8240411ff068b75153cebe7f89cbaa4be44bf8726be62b831cbfea9
|
|
4
|
+
data.tar.gz: 18bdb410d8ac32ebc4c2c8ec1687706830ab66d51ec6afa61d54d8bd9a437485
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
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.
|
|
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
|
|
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
|