From 4b8b2abb8c87238ea6c808783029ec8574d3a258 Mon Sep 17 00:00:00 2001 From: Kasper Timm Hansen Date: Sat, 4 Nov 2023 19:30:04 +0100 Subject: [PATCH] Fix `private performs` marking on immediate version too `private performs :some_method` should make both `:some_method` and `:some_method_later` private. But that only works if we return an array with both method names. --- lib/active_job/performs.rb | 2 ++ test/active_job/test_performs.rb | 1 + 2 files changed, 3 insertions(+) diff --git a/lib/active_job/performs.rb b/lib/active_job/performs.rb index 5fd4368..9ecb339 100644 --- a/lib/active_job/performs.rb +++ b/lib/active_job/performs.rb @@ -59,6 +59,8 @@ def #{method}_later#{suffix}(*arguments, **options) #{job}.scoped_by_wait(self).perform_later(self, *arguments, **options) end RUBY + + [method, :"#{method}_later#{suffix}"] # Ensure `private performs :some_method` privates both names. end end diff --git a/test/active_job/test_performs.rb b/test/active_job/test_performs.rb index 42a314b..ce16e8f 100644 --- a/test/active_job/test_performs.rb +++ b/test/active_job/test_performs.rb @@ -26,6 +26,7 @@ class ActiveJob::TestPerforms < ActiveSupport::TestCase end test "supports private methods" do + assert_includes Post::Publisher.private_instance_methods, :private_method assert_includes Post::Publisher.private_instance_methods, :private_method_later assert_output "private_method\n" do