rackr 0.0.61 → 0.0.62

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rackr.rb +42 -22
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 958ebe9d9710051bd7966c749bde46693f549b69161f8c2e5fb65df7904defbc
4
- data.tar.gz: ce2f52c33670ca35905baad636f541c55d6928dcbdca222fee53e08198f51e62
3
+ metadata.gz: e2a5e505cf9cd59162c47caa5689648b5e1167adc6f1d02192c0cde5ca3d6514
4
+ data.tar.gz: 48a936417f8aaf814ee71bd424decca4a0e6ed3effcc121a8859ee8259d22883
5
5
  SHA512:
6
- metadata.gz: 9c54346652bd2b53f1edf2442407c33b443304762e67f368d80d1a98545557c2de26becb6164dc56739c81f5eae680feaf0a5ce09c6476028a4960da390f0fb9
7
- data.tar.gz: 2c8f9223a603858d38af27d78ffb3d6123186d3302ab79bc86de33ee87848ffc179f1e6a9bd115db15c6b317c9289eaa165653deaaa881baaab5c236ee99dbc3
6
+ metadata.gz: 4577df846e784cf1acf95afd192c2f9b2953eaf1ee15c63956ddc7164bf5843afa9701157c3db2287ab23691778c5422fe87d052e2affd3d69670c8aedfbf02b
7
+ data.tar.gz: 14c4b0192f04a78524b49f1382ba3c94c48c47e0a9f112f5949ca1dc0addbe8cec28faa8f8ec27dce318eeb4dfb67fc7c25326919d0c2a1cc787c954e68cc396
data/lib/rackr.rb CHANGED
@@ -18,6 +18,11 @@ class Rackr
18
18
 
19
19
  def call(&block)
20
20
  instance_eval(&block)
21
+ puts "\n= Routes =============="
22
+ routes.each_pair { |v| p v }
23
+ puts "\n= Config =============="
24
+ puts config
25
+ puts "\n"
21
26
 
22
27
  @router
23
28
  end
@@ -61,35 +66,50 @@ class Rackr
61
66
  end
62
67
  end
63
68
 
64
- # Beta
65
- def resources(name, id:)
66
- const_name = name.to_s.capitalize
67
- id ||= :id
69
+ def resources(name, id: :id, before: [], after: [], &block)
70
+ @resource_namespace = (@resource_namespace || []).push([name.to_s.capitalize])
68
71
 
69
- scope name.to_s do
70
- get Object.const_get("Actions::#{const_name}::Index") if Object.const_defined?("Actions::#{const_name}::Index")
71
- get 'new', Object.const_get("Actions::#{const_name}::New") if Object.const_defined?("Actions::#{const_name}::New")
72
- post Object.const_get("Actions::#{const_name}::Index") if Object.const_defined?("Actions::#{const_name}::Index")
72
+ get_const = ->(type, action) do
73
+ if Object.const_defined?("#{type}::#{@resource_namespace.join('::')}::#{action}")
74
+ Object.const_get("#{type}::#{@resource_namespace.join('::')}::#{action}")
75
+ end
76
+ end
73
77
 
74
- resource_actions = proc do
75
- get Object.const_get("Actions::#{const_name}::Show") if Object.const_defined?("Actions::#{const_name}::Show")
76
- if Object.const_defined?("Actions::#{const_name}::Edit")
77
- get 'edit', Object.const_get("Actions::#{const_name}::Edit")
78
- end
79
- if Object.const_defined?("Actions::#{const_name}::Update")
80
- put Object.const_get("Actions::#{const_name}::Update")
81
- end
82
- if Object.const_defined?("Actions::#{const_name}::Delete")
83
- delete Object.const_get("Actions::#{const_name}::Delete")
84
- end
78
+ actions = {
79
+ index: { method: :get, path: nil, action: get_const.call('Actions', 'Index') },
80
+ new: { method: :get, path: 'new', action: get_const.call('Actions', 'New') },
81
+ create: { method: :post, path: nil, action: get_const.call('Actions', 'Create') },
82
+ }
83
+
84
+ actions_for_id = {
85
+ show: { method: :get, path: nil, action: get_const.call('Actions', 'Show') },
86
+ edit: { method: :get, path: "edit", action: get_const.call('Actions', 'Edit') },
87
+ update: { method: :put, path: nil, action: get_const.call('Actions', 'Update') },
88
+ delete: { method: :delete, path: nil, action: get_const.call('Actions', 'Delete') }
89
+ }
90
+
91
+ block_for_id = proc do
92
+ actions_for_id.each do |_, definition|
93
+ send(definition[:method], definition[:path], definition[:action]) if definition[:action]
85
94
  end
86
95
 
87
- if Object.const_defined?("Callbacks::#{const_name}::Assign")
88
- scope(id.to_sym, before: Object.const_get("Callbacks::#{const_name}::Assign"), &resource_actions)
96
+ instance_eval(&block) if block_given?
97
+ end
98
+
99
+ scope(name.to_s, before:, after:) do
100
+ actions.each do |_, definition|
101
+ send(definition[:method], definition[:path], definition[:action]) if definition[:action]
102
+ end
103
+
104
+ assign_callback = get_const.call('Callbacks', 'Assign')
105
+ if assign_callback
106
+ scope(id.to_sym, before: assign_callback, &block_for_id)
89
107
  else
90
- scope(id.to_sym, &resource_actions)
108
+ scope(id.to_sym, &block_for_id)
91
109
  end
92
110
  end
111
+
112
+ @resource_namespace = @resource_namespace.first(@resource_namespace.size - 1)
93
113
  end
94
114
 
95
115
  HTTP_METHODS.each do |http_method|
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rackr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.61
4
+ version: 0.0.62
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrique F. Teixeira
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-10-12 00:00:00.000000000 Z
10
+ date: 2025-10-13 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: erubi