belt 0.3.42 → 0.3.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a46f69166308a770107e86d0ccee9499a62e60858ebf000c74990183670eacfc
4
- data.tar.gz: 988f5e06c5b6f03fb42be923ea9864e9a9bdbf2f12bc4d8bd963c82066eaa9fe
3
+ metadata.gz: 35d8b66e560a7eedc35c0f801e54e80c5322c0aa81bbba2e84945c679ad37df8
4
+ data.tar.gz: 77cac61f6823651528069f69ba79e715acbe9b01054c101cdc51f7dbd5c0227c
5
5
  SHA512:
6
- metadata.gz: 6f614e8b43dfbe1a6431b0ae8f8a04f3bd92a33f305afd4c75d5a84252a45714b9462fbbbdc63d6978a873da674da053581f7a7afb521f011a06badcd6bc5913
7
- data.tar.gz: 766f648f1bc4b795698f605f729682ab44baf7e27fa66dd8ff73e6c618cd1bba21cd8ae15c75cdff9d8c1b6e9a98b84f5be4b1bd828d7e16c0efcc0071ef9a77
6
+ metadata.gz: 17067c3c5dca6d23f3a7c44576a2653fcb8d281d95951d0ac0faa3deececf9158a6cfeedd08ca2419b196bed86ce75989d0537f29bcdc8f4b288e284505c05d7
7
+ data.tar.gz: 7b4dad5df465c3f7ad7cf42bbd6dc803bfe5ef6443cfb92be9918c04a33ca5cb68c5b01082777933fd559cda4d7d9eb4e33dae07a22c1b1b1bf2d62cfa43a7ad
data/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.43
4
+
5
+ ### Bug Fix
6
+
7
+ - **Fix nested resource member parameter conflicts**: Extends the fix from 0.3.41
8
+ to also cover deeply nested resources and custom member actions. Previously,
9
+ resources nested inside other nested resources (e.g., `epics` inside `projects`
10
+ with a block) still used `{id}` for member routes while custom member actions
11
+ (like `post :test, on: :member`) used `{param_name}`.
12
+
13
+ This fixes the error for routes like:
14
+ ```
15
+ /projects/{project_id}/webhooks/{id} # show/update/destroy
16
+ /projects/{project_id}/webhooks/{webhook_id}/test # custom member action
17
+ ```
18
+
19
+ Now both use consistent parameter names when the resource has a block:
20
+ ```
21
+ /projects/{project_id}/webhooks/{webhook_id}
22
+ /projects/{project_id}/webhooks/{webhook_id}/test
23
+ ```
24
+
25
+ ## 0.3.42
26
+
27
+ ### New Features
28
+
29
+ - **Auto-sync apex DNS records**: When deploying to a production/apex environment,
30
+ `belt deploy` now automatically syncs A alias records (apex, www, api) to the
31
+ root zone in your shared DNS account. No more manual DNS steps for prod deploys.
32
+
33
+ - **`belt dns doctor`**: New diagnostic command showing DNS health across all
34
+ environments — zone status, NS delegation, ACM certificates, and resolution tests.
35
+
3
36
  ## 0.3.41
4
37
 
5
38
  ### Bug Fix
@@ -75,8 +75,11 @@ module Belt
75
75
  resource_options = options.merge(route_type: :resources)
76
76
  actions = @gateway.send(:determine_actions, options)
77
77
 
78
- add_nested_resource_routes(resource_name, param_name, resource_options, actions)
79
- return unless block
78
+ # When there's a block (nested resources or custom member actions), use {param_name}
79
+ # for member routes to avoid API Gateway sibling path parameter conflicts.
80
+ has_nested = !block.nil?
81
+ add_nested_resource_routes(resource_name, param_name, resource_options, actions, use_param_name: has_nested)
82
+ return unless has_nested
80
83
 
81
84
  nested_member_prefix = "#{@prefix}/#{resource_name}/{#{param_name}}"
82
85
  nested_collection_prefix = "#{@prefix}/#{resource_name}"
@@ -251,8 +254,11 @@ module Belt
251
254
  end
252
255
  end
253
256
 
254
- def add_nested_resource_routes(resource_name, _param_name, resource_options, actions)
255
- # Member routes (show/update/destroy) use {id}, not {singular_id} Rails convention
257
+ def add_nested_resource_routes(resource_name, param_name, resource_options, actions, use_param_name: false)
258
+ # Member routes (show/update/destroy) use {id} by default (Rails convention).
259
+ # When nested resources or custom member actions exist (use_param_name: true),
260
+ # use {param_name} instead to avoid API Gateway sibling path parameter conflicts.
261
+ member_param = use_param_name ? param_name : 'id'
256
262
  if actions.include?(:index)
257
263
  @gateway.send(:add_route, :get, "#{@prefix}/#{resource_name}",
258
264
  resolve_request_model_for(resource_options, :index))
@@ -262,16 +268,16 @@ module Belt
262
268
  resolve_request_model_for(resource_options, :create))
263
269
  end
264
270
  if actions.include?(:show)
265
- @gateway.send(:add_route, :get, "#{@prefix}/#{resource_name}/{id}",
271
+ @gateway.send(:add_route, :get, "#{@prefix}/#{resource_name}/{#{member_param}}",
266
272
  resolve_request_model_for(resource_options, :show))
267
273
  end
268
274
  if actions.include?(:update)
269
- @gateway.send(:add_route, :put, "#{@prefix}/#{resource_name}/{id}",
275
+ @gateway.send(:add_route, :put, "#{@prefix}/#{resource_name}/{#{member_param}}",
270
276
  resolve_request_model_for(resource_options, :update))
271
277
  end
272
278
  return unless actions.include?(:destroy)
273
279
 
274
- @gateway.send(:add_route, :delete, "#{@prefix}/#{resource_name}/{id}",
280
+ @gateway.send(:add_route, :delete, "#{@prefix}/#{resource_name}/{#{member_param}}",
275
281
  resolve_request_model_for(resource_options, :destroy))
276
282
  end
277
283
 
data/lib/belt/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Belt
4
- VERSION = '0.3.42'
4
+ VERSION = '0.3.43'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: belt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.42
4
+ version: 0.3.43
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stowzilla