rest_framework 0.2.3 → 0.2.4

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: '09c24135bd79001e0113aa92f21e63c5dcb67e93891db2a5df36b4d83d1c5da2'
4
- data.tar.gz: ba3bd5829fdb9fd3c61a6050f5800c91a0077c76e78aedb049f850e581027f67
3
+ metadata.gz: 8d9ce4741f59e6f68bfa18bc2e6c11202c91fbe251eeaa5562f8f718e6e8afaa
4
+ data.tar.gz: 652ad42a8d0bad99e552af9117112df707e67d4c1e6dd2dd983e7925933fcab6
5
5
  SHA512:
6
- metadata.gz: c89c8af64c2eeb36dba79747770df5497d8505f2a4ced03ed6e25e81804a3a8a8f656e87bb0739a31d26be8e1f0fdcdd9e3df25721766e2e5d4bb2a01d40746f
7
- data.tar.gz: 4bd5bdf9f2735622a07795245f605137c0310d16b3596fc544e9ade2046744a499ea0fdf1e7f11c7f5fc49f137650cceefadcf805884e6a6df5361ed919211d4
6
+ metadata.gz: 26036468d40ccc77a203981ba442265ef82c7a991fee800ee3d7925d96d09a696f3db06930e8252c49cf63e86d2aee2fd121a735e5e06609585299ff984d6992
7
+ data.tar.gz: 3c53d8eed996e380ab3390acfde7a3cef262d38a1355d0016aa6d8129b8e329c99003c0181ec1602f5bb1ba8869355e6b1eb0ff366d8b814ff83f6bb3c9cbf4d
data/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/rest_framework.svg)](https://badge.fury.io/rb/rest_framework)
4
4
  [![Build Status](https://travis-ci.org/gregschmit/rails-rest-framework.svg?branch=master)](https://travis-ci.org/gregschmit/rails-rest-framework)
5
5
  [![Coverage Status](https://coveralls.io/repos/github/gregschmit/rails-rest-framework/badge.svg?branch=master)](https://coveralls.io/github/gregschmit/rails-rest-framework?branch=master)
6
+ [![Maintainability](https://api.codeclimate.com/v1/badges/ba5df7706cb544d78555/maintainability)](https://codeclimate.com/github/gregschmit/rails-rest-framework/maintainability)
6
7
 
7
8
  A framework for DRY RESTful APIs in Ruby on Rails.
8
9
 
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.2.4
@@ -6,7 +6,7 @@ module ActionDispatch::Routing
6
6
  # Internal helper to take extra_actions hash and convert to a consistent format.
7
7
  protected def _parse_extra_actions(extra_actions)
8
8
  return (extra_actions || {}).map do |k,v|
9
- kwargs = {}
9
+ kwargs = {action: k}
10
10
  path = k
11
11
 
12
12
  # Convert structure to path/methods/kwargs.
@@ -25,11 +25,6 @@ module ActionDispatch::Routing
25
25
  path = v.delete(:path)
26
26
  end
27
27
 
28
- # Set the action to be the action key unless it's already defined.
29
- if !kwargs[:action]
30
- kwargs[:action] = k
31
- end
32
-
33
28
  # Pass any further kwargs to the underlying Rails interface.
34
29
  kwargs = kwargs.merge(v)
35
30
  elsif v.is_a?(Symbol) || v.is_a?(String)
@@ -77,6 +72,16 @@ module ActionDispatch::Routing
77
72
  return controller
78
73
  end
79
74
 
75
+ # Interal interface for routing extra actions.
76
+ protected def _route_extra_actions(actions, &block)
77
+ actions.each do |action_config|
78
+ action_config[:methods].each do |m|
79
+ public_send(m, action_config[:path], **action_config[:kwargs])
80
+ end
81
+ yield if block_given?
82
+ end
83
+ end
84
+
80
85
  # Internal core implementation of the `rest_resource(s)` router, both singular and plural.
81
86
  # @param default_singular [Boolean] the default plurality of the resource if the plurality is
82
87
  # not otherwise defined by the controller
@@ -105,28 +110,20 @@ module ActionDispatch::Routing
105
110
  end
106
111
  resource_method = singular ? :resource : :resources
107
112
 
108
- # call either `resource` or `resources`, passing appropriate modifiers
113
+ # Call either `resource` or `resources`, passing appropriate modifiers.
109
114
  skip_undefined = kwargs.delete(:skip_undefined) || true
110
115
  skip = controller_class.get_skip_actions(skip_undefined: skip_undefined)
111
116
  public_send(resource_method, name, except: skip, **kwargs) do
112
117
  if controller_class.respond_to?(:extra_member_actions)
113
118
  member do
114
119
  actions = self._parse_extra_actions(controller_class.extra_member_actions)
115
- actions.each do |action_config|
116
- action_config[:methods].each do |m|
117
- public_send(m, action_config[:path], **action_config[:kwargs])
118
- end
119
- end
120
+ _route_extra_actions(actions)
120
121
  end
121
122
  end
122
123
 
123
124
  collection do
124
125
  actions = self._parse_extra_actions(controller_class.extra_actions)
125
- actions.each do |action_config|
126
- action_config[:methods].each do |m|
127
- public_send(m, action_config[:path], **action_config[:kwargs])
128
- end
129
- end
126
+ _route_extra_actions(actions)
130
127
  end
131
128
 
132
129
  yield if block_given?
@@ -150,6 +147,7 @@ module ActionDispatch::Routing
150
147
  # Route a controller without the default resourceful paths.
151
148
  def rest_route(name=nil, **kwargs, &block)
152
149
  controller = kwargs.delete(:controller) || name
150
+ route_root_to = kwargs.delete(:route_root_to)
153
151
  if controller.is_a?(Class)
154
152
  controller_class = controller
155
153
  else
@@ -162,42 +160,27 @@ module ActionDispatch::Routing
162
160
  # Route actions using the resourceful router, but skip all builtin actions.
163
161
  actions = self._parse_extra_actions(controller_class.extra_actions)
164
162
  public_send(:resource, name, only: [], **kwargs) do
165
- actions.each do |action_config|
166
- action_config[:methods].each do |m|
167
- public_send(m, action_config[:path], **action_config[:kwargs])
168
- end
169
- yield if block_given?
163
+ # Route a root for this resource.
164
+ if route_root_to
165
+ get '', action: route_root_to
170
166
  end
167
+
168
+ _route_extra_actions(actions, &block)
171
169
  end
172
170
  end
173
171
 
174
172
  # Route a controller's `#root` to '/' in the current scope/namespace, along with other actions.
175
- # @param name [Symbol] the snake_case name of the controller
176
173
  def rest_root(name=nil, **kwargs, &block)
177
174
  # By default, use RootController#root.
178
175
  root_action = kwargs.delete(:action) || :root
179
176
  controller = kwargs.delete(:controller) || name || :root
180
177
 
181
- # Route the root.
182
- get name.to_s, controller: controller, action: root_action
183
-
184
- # Route any additional actions.
185
- controller_class = self._get_controller_class(controller, pluralize: false)
186
- actions = self._parse_extra_actions(controller_class.extra_actions)
187
- actions.each do |action_config|
188
- # Add :action unless kwargs defines it.
189
- unless action_config[:kwargs].key?(:action)
190
- action_config[:kwargs][:action] = action_config[:path]
191
- end
178
+ # Remove path if name is nil (routing to the root of current namespace).
179
+ unless name
180
+ kwargs[:path] = ''
181
+ end
192
182
 
193
- action_config[:methods].each do |m|
194
- public_send(
195
- m,
196
- File.join(name.to_s, action_config[:path].to_s),
197
- controller: controller,
198
- **action_config[:kwargs],
199
- )
200
- end
183
+ return rest_route(controller, route_root_to: root_action, **kwargs) do
201
184
  yield if block_given?
202
185
  end
203
186
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregory N. Schmit