From 1daa0eae991de017d94e1e15334612e67a47e9c9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 16 Apr 2026 09:58:55 +0900 Subject: Fetch PR data once to avoid duplicate API calls Extract the PR API call into the review method and pass it to review_non_fork_branch and review_redmine_links so the same endpoint is not fetched twice per run. Co-Authored-By: Claude Opus 4.6 (1M context) --- tool/auto_review_pr.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tool/auto_review_pr.rb b/tool/auto_review_pr.rb index e281cec00e..d659730f56 100755 --- a/tool/auto_review_pr.rb +++ b/tool/auto_review_pr.rb @@ -60,9 +60,10 @@ class AutoReviewPR def review(pr_number) existing_comments = fetch_existing_comments(pr_number) - review_non_fork_branch(pr_number, existing_comments) + pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}") + review_non_fork_branch(pr_number, pr, existing_comments) review_upstream_repos(pr_number, existing_comments) - review_redmine_links(pr_number, existing_comments) + review_redmine_links(pr_number, pr, existing_comments) end private @@ -82,13 +83,12 @@ class AutoReviewPR end # Suggest re-filing from a fork if the PR branch is in ruby/ruby itself - def review_non_fork_branch(pr_number, existing_comments) + def review_non_fork_branch(pr_number, pr, existing_comments) if already_commented?(existing_comments, FORK_COMMENT_PREFIX) puts "Skipped: The PR ##{pr_number} already has a fork branch comment." return end - pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}") head_repo = pr.dig(:head, :repo, :full_name) if head_repo != REPO puts "Skipped: The PR ##{pr_number} is already from a fork (#{head_repo})." @@ -124,13 +124,12 @@ class AutoReviewPR post_comment(pr_number, format_upstream_comment(upstream_repos)) end - def review_redmine_links(pr_number, existing_comments) + def review_redmine_links(pr_number, pr, existing_comments) if already_commented?(existing_comments, REDMINE_COMMENT_PREFIX) puts "Skipped: The PR ##{pr_number} already has a Redmine links comment." return end - pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}") text = "#{pr[:title]}\n#{pr[:body]}" tickets = text.scan(REDMINE_TICKET_PATTERN).uniq -- cgit v1.2.3