@gravitystorm requested changes on this pull request.

This looks good to me, just a few minor comments inline.

The big topic here for me now is the ruby 3.3+ requirement. This means that 
developers can't install the codebase on the latest Ubuntu LTS, which we've 
traditionally supported for DX reasons. While experienced devs might be fine 
with ruby version managers, for many people it's a confusing nightmare of 
unclear choices, particularly if they aren't familiar with ruby. (I even had to 
change my local ruby version to test this PR!)

I can think of a few options:
* review the upstream gem to see if ruby 3.2 support is trivial? Long shot, but 
might be an easy option. I'd even consider using a fork for a few months if 
it's a minor delta.
* Move the ruby 3.3+ stuff into a separate PR, so that we can discuss/merge 
that bit first
* Wait for a few months until the next LTS is out and some of this stuff 
resolves itself!

Aside from that, I'm keen to hear if anyone else has review comments.

> @@ -19,8 +19,18 @@ def status
 
   # Raised when access is denied.
   class APIAccessDenied < APIError
-    def initialize
-      super("Access denied")
+    def initialize(message = "Access denied")
+      super
+    end
+
+    def status
+      :forbidden
+    end
+  end
+
+  class APIModerationZoneError < APIAccessDenied
+    def initialize(message = "Attempted to edit a Moderation Zone without 
enough trust")

I think the message needs rephrasing:

* The user did not "attempt to edit a moderation zone", it will be moderators 
who edit the zones
* I know what you mean by "without enough trust" but perhaps it's a little 
cryptic?

> @@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+  factory :coordinates, :class => Struct.new(:lat, :lon) do
+    trait :inside_seville_cathedral do

It's a little unusual to have a factory that doesn't represent a model. Would 
it be more clear if it was just a helper method within the relevant test file?

> @@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+  factory :moderation_zone do
+    sequence(:name) { |n| "Zone block #{n}" }
+    sequence(:reason) { |n| "Reason for block #{n}" }

"reason for moderation zone"?

> @@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: moderation_zones
+#
+#  id            :bigint           not null, primary key
+#  name          :string           not null
+#  reason        :string           not null
+#  reason_format :enum             default("markdown")
+#  zone          :st_geometry      not null, geometry, 0

The 0 at the end makes me think about projections. I'm not sure here whether an 
srid of 0 or 4326 would be better here.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/openstreetmap-website/pull/6713#pullrequestreview-3751759307
You are receiving this because you are subscribed to this thread.

Message ID: 
<openstreetmap/openstreetmap-website/pull/6713/review/[email protected]>
_______________________________________________
rails-dev mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/rails-dev

Reply via email to