console_buddy 0.1.11 → 0.2.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.
- checksums.yaml +4 -4
- data/lib/console_buddy/irb.rb +0 -1
- 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 +47 -27
- 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: 821a188d27921a77f9b97c567f51d48affc3d3868ca502fe1feef3c58e500905
|
|
4
|
+
data.tar.gz: 0ce397777a079e04d14dc5debbceccce227302b2477400f7fc83f4cbcb35ed51
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 87f7f8f39518800ff5bca51db854c0a4691f55023c1a232d2303af1ff91c267f438ed6cfb89a52a0c856fc01de552293824813b2c3f3f6090962d079eb95cdd4
|
|
7
|
+
data.tar.gz: 477afa87ea90865b2925e1dbddadf325a0418634df0e6b2c858957345c7df38f67703fd76679c7ad72ab550bd25bd592fc0291542c636b2c894115e2fe2313b6
|
data/lib/console_buddy/irb.rb
CHANGED
|
@@ -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
|
@@ -14,44 +14,19 @@ require_relative "console_buddy/helpers"
|
|
|
14
14
|
require_relative "console_buddy/irb"
|
|
15
15
|
require_relative "console_buddy/version"
|
|
16
16
|
|
|
17
|
-
require_relative "console_buddy/one_off_job"
|
|
18
|
-
require_relative "console_buddy/job"
|
|
19
|
-
|
|
20
17
|
rspec_present = false
|
|
21
|
-
# Only load the one-off job classes if the gems are installed
|
|
22
|
-
#
|
|
23
|
-
begin
|
|
24
|
-
require 'sidekiq'
|
|
25
|
-
require_relative "console_buddy/jobs/sidekiq"
|
|
26
|
-
rescue LoadError
|
|
27
|
-
# puts "Sidekiq gem not installed, skipping sidekiq job integration."
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
begin
|
|
31
|
-
require 'resque'
|
|
32
|
-
require_relative "console_buddy/jobs/resque"
|
|
33
|
-
rescue LoadError
|
|
34
|
-
# puts "Resque gem not installed, skipping resque job integration."
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
begin
|
|
38
|
-
require 'activejob'
|
|
39
|
-
require_relative "console_buddy/jobs/active_job"
|
|
40
|
-
rescue LoadError
|
|
41
|
-
# puts "ActiveJob gem not installed, skipping active job integration."
|
|
42
|
-
end
|
|
43
18
|
|
|
44
19
|
begin
|
|
45
20
|
require 'rspec'
|
|
46
21
|
rspec_present = true
|
|
47
22
|
rescue LoadError
|
|
48
23
|
rspec_present = false
|
|
49
|
-
# puts "RSpec gem not installed, skipping rspec integration."
|
|
50
24
|
end
|
|
51
25
|
|
|
52
26
|
module ConsoleBuddy
|
|
53
27
|
class << self
|
|
54
|
-
attr_accessor :verbose_console, :allowed_envs, :use_in_debuggers, :ignore_startup_errors, :use_in_tests, :one_off_job_service_type
|
|
28
|
+
attr_accessor :verbose_console, :allowed_envs, :use_in_debuggers, :ignore_startup_errors, :use_in_tests, :one_off_job_service_type,
|
|
29
|
+
:one_off_job_sidekiq_queue, :enable_one_off_jobs
|
|
55
30
|
|
|
56
31
|
def store
|
|
57
32
|
@store ||= ::ConsoleBuddy::MethodStore.new
|
|
@@ -64,6 +39,7 @@ module ConsoleBuddy
|
|
|
64
39
|
return unless console_buddy_directory_exists?
|
|
65
40
|
# Check if there is a .console_buddy/config file
|
|
66
41
|
load_console_buddy_config
|
|
42
|
+
load_one_off_job_integrations
|
|
67
43
|
|
|
68
44
|
# Only start the buddy in the allowed environments. e.g. development, test
|
|
69
45
|
return if !allowed_env?
|
|
@@ -99,7 +75,9 @@ module ConsoleBuddy
|
|
|
99
75
|
@use_in_debuggers = false
|
|
100
76
|
@ignore_startup_errors = false
|
|
101
77
|
@allowed_envs = %w[development test]
|
|
78
|
+
@enable_one_off_jobs = false
|
|
102
79
|
@one_off_job_service_type = :inline
|
|
80
|
+
@one_off_job_sidekiq_queue = nil
|
|
103
81
|
end
|
|
104
82
|
|
|
105
83
|
# Only start the buddy in the allowed environments
|
|
@@ -146,6 +124,48 @@ module ConsoleBuddy
|
|
|
146
124
|
end
|
|
147
125
|
end
|
|
148
126
|
|
|
127
|
+
# Loads one-off job integration files and syncs Sidekiq options.
|
|
128
|
+
# Only runs when enable_one_off_jobs is true in config.
|
|
129
|
+
def load_one_off_job_integrations
|
|
130
|
+
return unless enable_one_off_jobs
|
|
131
|
+
|
|
132
|
+
require_relative "console_buddy/one_off_job"
|
|
133
|
+
require_relative "console_buddy/job"
|
|
134
|
+
|
|
135
|
+
begin
|
|
136
|
+
require 'sidekiq'
|
|
137
|
+
require_relative "console_buddy/jobs/sidekiq"
|
|
138
|
+
rescue LoadError
|
|
139
|
+
# Sidekiq gem not installed, skipping sidekiq job integration.
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
begin
|
|
143
|
+
require 'resque'
|
|
144
|
+
require_relative "console_buddy/jobs/resque"
|
|
145
|
+
rescue LoadError
|
|
146
|
+
# Resque gem not installed, skipping resque job integration.
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
begin
|
|
150
|
+
require 'activejob'
|
|
151
|
+
require_relative "console_buddy/jobs/active_job"
|
|
152
|
+
rescue LoadError
|
|
153
|
+
# ActiveJob gem not installed, skipping active job integration.
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
apply_sidekiq_queue_to_worker
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# Sync Sidekiq worker metadata so queue auditors and Sidekiq see a real queue (not the default queue).
|
|
160
|
+
def apply_sidekiq_queue_to_worker
|
|
161
|
+
return unless defined?(::ConsoleBuddy::Jobs::Sidekiq)
|
|
162
|
+
|
|
163
|
+
q = ConsoleBuddy.one_off_job_sidekiq_queue
|
|
164
|
+
return if q.blank?
|
|
165
|
+
|
|
166
|
+
::ConsoleBuddy::Jobs::Sidekiq.sidekiq_options queue: q.to_sym
|
|
167
|
+
end
|
|
168
|
+
|
|
149
169
|
# Loads all the files in the .console_buddy folder
|
|
150
170
|
# .console_buddy folder should be in the root of the project
|
|
151
171
|
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.
|
|
4
|
+
version: 0.2.0
|
|
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-
|
|
12
|
+
date: 2026-04-13 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
|