fix(goals): reconciler logs to Sentry + rename :extend route to :renew

Two Ruby idiom audit fixes.

The Reconciler's outer `rescue StandardError` was logging at error
level and moving on. Pipeline-protective (we don't want a Goal
reconcile failure to break the Plaid/SimpleFIN/etc importer it's
hooked into) but invisible — real bugs hid behind a warn log
forever. Add `Sentry.capture_exception(e) if defined?(Sentry)`
alongside the log, matching the pattern in `Account::Syncer`,
`Sync`, `PlaidItem`, and the chart-series rescues this branch
already added. Keep the rescue's protective function.

`member do patch :extend end` shadows `Module#extend` — the
controller action name competes with Ruby's most-common
mixin entry point. `before_action :foo, only: %i[extend destroy]`
reads as "extend this controller with :foo, only: …" to a casual
reader, and stack traces against `def extend` look misleading.
Rename to `:renew` (matches the existing copy: the button says
"Extend 7 days," but the API verb is "renew the watching window"):

  - config/routes.rb: `patch :renew`
  - GoalPledgesController#extend → #renew
  - locale `goal_pledges.extend` → `goal_pledges.renew`
  - banner `extend_goal_pledge_path` → `renew_goal_pledge_path`
  - test refs updated

The user-facing button text is unchanged.
This commit is contained in:
Guillem Arias
2026-05-14 21:50:01 +02:00
parent 3b9f315f79
commit 51fca464b5
6 changed files with 13 additions and 7 deletions

View File

@@ -1,6 +1,6 @@
class GoalPledgesController < ApplicationController
before_action :set_goal
before_action :set_pledge, only: %i[extend destroy]
before_action :set_pledge, only: %i[renew destroy]
rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
def new
@@ -32,7 +32,7 @@ class GoalPledgesController < ApplicationController
end
end
def extend
def renew
@pledge.extend!
redirect_to goal_path(@goal), notice: t(".success")
rescue GoalPledge::NotOpenError