Geo: Move carrierwave_uploader into UploadReplicatorBehavior

What does this MR do and why?

All 24 Geo replicators backed by an Upload (every upload-partition replicator plus the legacy Geo::UploadReplicator) defined an identical carrierwave_uploader:

def carrierwave_uploader
  model_record.retrieve_uploader
end

They already include ::Geo::Concerns::UploadReplicatorBehavior, so this moves the method there and removes it from each replicator. Because the concern is included after BlobReplicatorStrategy, its carrierwave_uploader correctly implements that strategy's abstract method.

The blob replicator generator is updated to match: the --upload-partition flavor no longer emits carrierwave_uploader (the concern provides it), while regular blobs still generate their own.

Verification

  • bundle exec rspec ee/spec/replicators/geo/ (all replicator specs, which exercise carrierwave_uploader through the shared examples) plus both generator specs: green.
  • RuboCop clean on all changed files.
  • No behavior change: the concern method is identical to what each replicator defined, and it is included after BlobReplicatorStrategy.

Part of the SSF boilerplate reduction in #589925 (closed) (epic &20933).

🤖 Generated with Claude Code

Merge request reports

Loading