git: 0b1b15396e1b - main - devel/rubygem-sidekiq-unique-jobs: Allow build with rubygem-sidekiq 8.0.0+
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 19 Mar 2025 04:02:21 UTC
The branch main has been updated by sunpoet:
URL: https://cgit.FreeBSD.org/ports/commit/?id=0b1b15396e1bbf9e249d5b6c406345df0116d2a0
commit 0b1b15396e1bbf9e249d5b6c406345df0116d2a0
Author: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2025-03-19 03:43:25 +0000
Commit: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2025-03-19 03:43:25 +0000
devel/rubygem-sidekiq-unique-jobs: Allow build with rubygem-sidekiq 8.0.0+
- Bump PORTREVISION for package change
Obtained from: https://github.com/mhenrixon/sidekiq-unique-jobs/commit/fdfc15ef00961295b3ec1533d33b86315bd80224
https://github.com/mhenrixon/sidekiq-unique-jobs/commit/73bc7ffbac4a3c9c51e426d6329d18bb25bd06a1
---
devel/rubygem-sidekiq-unique-jobs/Makefile | 3 +-
.../files/patch-sidekiq8 | 192 +++++++++++++++++++++
2 files changed, 194 insertions(+), 1 deletion(-)
diff --git a/devel/rubygem-sidekiq-unique-jobs/Makefile b/devel/rubygem-sidekiq-unique-jobs/Makefile
index 165ad1c96646..60030ac5e060 100644
--- a/devel/rubygem-sidekiq-unique-jobs/Makefile
+++ b/devel/rubygem-sidekiq-unique-jobs/Makefile
@@ -1,5 +1,6 @@
PORTNAME= sidekiq-unique-jobs
PORTVERSION= 8.0.10
+PORTREVISION= 1
CATEGORIES= devel rubygems
MASTER_SITES= RG
@@ -11,7 +12,7 @@ LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE.txt
RUN_DEPENDS= rubygem-concurrent-ruby>=1.0.5<2:devel/rubygem-concurrent-ruby \
- rubygem-sidekiq>=7.0.0<8.0.0:devel/rubygem-sidekiq \
+ rubygem-sidekiq>=7.0.0<9.0.0:devel/rubygem-sidekiq \
rubygem-thor>=1.0<3.0:devel/rubygem-thor
USES= gem
diff --git a/devel/rubygem-sidekiq-unique-jobs/files/patch-sidekiq8 b/devel/rubygem-sidekiq-unique-jobs/files/patch-sidekiq8
new file mode 100644
index 000000000000..b0763b343c19
--- /dev/null
+++ b/devel/rubygem-sidekiq-unique-jobs/files/patch-sidekiq8
@@ -0,0 +1,192 @@
+Obtained from: https://github.com/mhenrixon/sidekiq-unique-jobs/commit/fdfc15ef00961295b3ec1533d33b86315bd80224
+ https://github.com/mhenrixon/sidekiq-unique-jobs/commit/73bc7ffbac4a3c9c51e426d6329d18bb25bd06a1
+
+--- lib/sidekiq_unique_jobs/web.rb.orig 2025-03-15 18:09:47 UTC
++++ lib/sidekiq_unique_jobs/web.rb
+@@ -8,20 +8,18 @@ module SidekiqUniqueJobs
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
+ module Web
+ def self.registered(app) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
+- app.helpers do
+- include Web::Helpers
+- end
++ app.helpers Web::Helpers
+
+ app.get "/changelogs" do
+- @filter = h(params[:filter] || "*")
++ @filter = h(safe_url_params("filter") || "*")
+ @filter = "*" if @filter == ""
+- @count = h(params[:count] || 100).to_i
+- @current_cursor = h(params[:cursor]).to_i
+- @prev_cursor = h(params[:prev_cursor]).to_i
++ @count = h(safe_url_params("count") || 100).to_i
++ @current_cursor = h(safe_url_params("cursor")).to_i
++ @prev_cursor = h(safe_url_params("prev_cursor")).to_i
+ @total_size, @next_cursor, @changelogs = changelog.page(
+ cursor: @current_cursor,
+ pattern: @filter,
+- page_size: @count,
++ page_size: @count
+ )
+
+ erb(unique_template(:changelogs))
+@@ -29,36 +27,36 @@ module SidekiqUniqueJobs
+
+ app.get "/changelogs/delete_all" do
+ changelog.clear
+- redirect_to :changelogs
++ safe_redirect_to :changelogs
+ end
+
+ app.get "/locks" do
+- @filter = h(params[:filter]) || "*"
++ @filter = h(safe_url_params("filter") || "*")
+ @filter = "*" if @filter == ""
+- @count = h(params[:count] || 100).to_i
+- @current_cursor = h(params[:cursor]).to_i
+- @prev_cursor = h(params[:prev_cursor]).to_i
++ @count = h(safe_url_params("count") || 100).to_i
++ @current_cursor = h(safe_url_params("cursor")).to_i
++ @prev_cursor = h(safe_url_params("prev_cursor")).to_i
+
+ @total_size, @next_cursor, @locks = digests.page(
+ cursor: @current_cursor,
+ pattern: @filter,
+- page_size: @count,
++ page_size: @count
+ )
+
+ erb(unique_template(:locks))
+ end
+
+ app.get "/expiring_locks" do
+- @filter = h(params[:filter]) || "*"
++ @filter = h(safe_url_params("filter") || "*")
+ @filter = "*" if @filter == ""
+- @count = h(params[:count] || 100).to_i
+- @current_cursor = h(params[:cursor]).to_i
+- @prev_cursor = h(params[:prev_cursor]).to_i
++ @count = h(safe_url_params("count") || 100).to_i
++ @current_cursor = h(safe_url_params("cursor")).to_i
++ @prev_cursor = h(safe_url_params("prev_cursor")).to_i
+
+ @total_size, @next_cursor, @locks = expiring_digests.page(
+ cursor: @current_cursor,
+ pattern: @filter,
+- page_size: @count,
++ page_size: @count
+ )
+
+ erb(unique_template(:locks))
+@@ -67,29 +65,29 @@ module SidekiqUniqueJobs
+ app.get "/locks/delete_all" do
+ digests.delete_by_pattern("*", count: digests.count)
+ expiring_digests.delete_by_pattern("*", count: digests.count)
+- redirect_to :locks
++ safe_redirect_to :locks
+ end
+
+ app.get "/locks/:digest" do
+- @digest = h(params[:digest])
++ @digest = h(safe_route_params(:digest))
+ @lock = SidekiqUniqueJobs::Lock.new(@digest)
+
+ erb(unique_template(:lock))
+ end
+
+ app.get "/locks/:digest/delete" do
+- digests.delete_by_digest(h(params[:digest]))
+- expiring_digests.delete_by_digest(h(params[:digest]))
+- redirect_to :locks
++ digests.delete_by_digest(h(safe_route_params(:digest)))
++ expiring_digests.delete_by_digest(h(safe_route_params(:digest)))
++ safe_redirect_to :locks
+ end
+
+ app.get "/locks/:digest/jobs/:job_id/delete" do
+- @digest = h(params[:digest])
+- @job_id = h(params[:job_id])
++ @digest = h(safe_route_params(:digest))
++ @job_id = h(safe_route_params(:job_id))
+ @lock = SidekiqUniqueJobs::Lock.new(@digest)
+ @lock.unlock(@job_id)
+
+- redirect_to "locks/#{@lock.key}"
++ safe_redirect_to "locks/#{@lock.key}"
+ end
+ end
+ end
+@@ -99,11 +97,17 @@ begin
+ require "delegate" unless defined?(DelegateClass)
+ require "sidekiq/web" unless defined?(Sidekiq::Web)
+
+- Sidekiq::Web.register(SidekiqUniqueJobs::Web)
+- Sidekiq::Web.tabs["Locks"] = "locks"
+- Sidekiq::Web.tabs["Expiring Locks"] = "expiring_locks"
+- Sidekiq::Web.tabs["Changelogs"] = "changelogs"
+- Sidekiq::Web.settings.locales << File.join(File.dirname(__FILE__), "locales")
+-rescue NameError, LoadError => ex
+- SidekiqUniqueJobs.logger.error(ex)
++ if Sidekiq::MAJOR >= 8
++ Sidekiq::Web.configure do |config|
++ config.register_extension(SidekiqUniqueJobs::Web, name: "unique_jobs", tab: ["Locks", "Expiring Locks", "Changelogs"],
++ index: %w[locks/ expiring_locks/ changelogs/])
++ end
++ else
++ Sidekiq::Web.register(SidekiqUniqueJobs::Web)
++ Sidekiq::Web.tabs["Locks"] = "locks"
++ Sidekiq::Web.tabs["Expiring Locks"] = "expiring_locks"
++ Sidekiq::Web.tabs["Changelogs"] = "changelogs"
++ end
++rescue NameError, LoadError => e
++ SidekiqUniqueJobs.logger.error(e)
+ end
+--- lib/sidekiq_unique_jobs/web/helpers.rb.orig 2025-03-15 18:09:47 UTC
++++ lib/sidekiq_unique_jobs/web/helpers.rb
+@@ -116,7 +116,7 @@ module SidekiqUniqueJobs
+ #
+ # @return a redirect to the new subpath
+ #
+- def redirect_to(subpath)
++ def safe_redirect_to(subpath)
+ if respond_to?(:to)
+ # Sinatra-based web UI
+ redirect to(subpath)
+@@ -169,6 +169,26 @@ module SidekiqUniqueJobs
+ else
+ Time.parse(time.to_s)
+ end
++ end
++
++ # Copied from sidekiq for compatibility with older versions
++
++ # stuff after ? or form input
++ # uses String keys, no Symbols!
++ def safe_url_params(key)
++ return url_params(key) if Sidekiq::MAJOR >= 8
++
++ warn { "URL parameter `#{key}` should be accessed via String, not Symbol (at #{caller(3..3).first})" } if key.is_a?(Symbol)
++ request.params[key.to_s]
++ end
++
++ # variables embedded in path, `/metrics/:name`
++ # uses Symbol keys, no Strings!
++ def safe_route_params(key)
++ return route_params(key) if Sidekiq::MAJOR >= 8
++
++ warn { "Route parameter `#{key}` should be accessed via Symbol, not String (at #{caller(3..3).first})" } if key.is_a?(String)
++ env["rack.route_params"][key.to_sym]
+ end
+ end
+ end
+--- sidekiq-unique-jobs.gemspec.orig 2025-03-15 18:09:47 UTC
++++ sidekiq-unique-jobs.gemspec
+@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
+ s.specification_version = 4
+
+ s.add_runtime_dependency(%q<concurrent-ruby>.freeze, ["~> 1.0".freeze, ">= 1.0.5".freeze])
+- s.add_runtime_dependency(%q<sidekiq>.freeze, [">= 7.0.0".freeze, "< 8.0.0".freeze])
++ s.add_runtime_dependency(%q<sidekiq>.freeze, [">= 7.0.0".freeze, "< 9.0.0".freeze])
+ s.add_runtime_dependency(%q<thor>.freeze, [">= 1.0".freeze, "< 3.0".freeze])
+ end
+