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 +