rails-rapido 0.3.9 → 0.4.0
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 +4 -4
- data/README.md +0 -1
- data/lib/rapido.rb +0 -1
- data/lib/rapido/app_controller.rb +10 -5
- data/lib/rapido/controller.rb +60 -87
- data/lib/rapido/version.rb +1 -1
- metadata +3 -4
- data/lib/rapido/app_views.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04bd1cc6e6fd9527fc1b90022653cf1f8d48c041
|
4
|
+
data.tar.gz: bb1d6b86f00de708625b1b62f0aeb8363f4e6571
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ff34955402b0927030447e6cf25314cc0be498ebe8da896d0d490902753fb0d2efd4d9cbf3961f7b2651d0bcf12e3934b2eb27bb88b56159cc411c1245651ef
|
7
|
+
data.tar.gz: 2966b6c780cd4b58e85719e338bd2ef7b4780199aaa523bc1d348c474efdd759e866877514f254cd6c2a8ac3a116a26291c1b93c5d57d082b91e7d46b7a764ce
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Rapido
|
2
2
|
|
3
3
|
[](https://codeclimate.com/github/starfighterheavy/rapido)
|
4
|
-
[](https://gemnasium.com/starfighterheavy/rapido)
|
5
4
|
|
6
5
|
Rapido is a simple, highly opinionated library that can be included into your Rails controllers to enforce standardized behavior and security.
|
7
6
|
|
data/lib/rapido.rb
CHANGED
@@ -30,11 +30,13 @@ module Rapido
|
|
30
30
|
new_resource = build_resource(resource_params)
|
31
31
|
if new_resource.save
|
32
32
|
after_create_success(new_resource)
|
33
|
-
|
33
|
+
return if performed?
|
34
|
+
redirect_to after_create_path(new_resource)
|
34
35
|
else
|
35
36
|
flash[:error] = new_resource.errors.full_messages.join('. ')
|
36
37
|
after_create_failure(new_resource)
|
37
|
-
|
38
|
+
return if performed?
|
39
|
+
redirect_to new_path
|
38
40
|
end
|
39
41
|
end
|
40
42
|
|
@@ -43,7 +45,8 @@ module Rapido
|
|
43
45
|
flash[:error] = resource.errors.full_messages.join('. ')
|
44
46
|
end
|
45
47
|
after_destroy_success(resource)
|
46
|
-
|
48
|
+
return if performed?
|
49
|
+
redirect_to after_delete_path(resource)
|
47
50
|
end
|
48
51
|
|
49
52
|
def edit
|
@@ -54,12 +57,14 @@ module Rapido
|
|
54
57
|
resource.assign_attributes(resource_params)
|
55
58
|
if resource.save
|
56
59
|
after_update_success(resource)
|
57
|
-
|
60
|
+
return if performed?
|
61
|
+
redirect_to after_update_path(resource)
|
58
62
|
else
|
59
63
|
flash[:error] = resource.errors.full_messages.join('. ')
|
60
64
|
resource.reload
|
61
65
|
after_update_failure(resource)
|
62
|
-
|
66
|
+
return if performed?
|
67
|
+
redirect_to edit_path(resource)
|
63
68
|
end
|
64
69
|
end
|
65
70
|
|
data/lib/rapido/controller.rb
CHANGED
@@ -24,14 +24,6 @@ module Rapido
|
|
24
24
|
end
|
25
25
|
|
26
26
|
class_methods do
|
27
|
-
def authority(sym)
|
28
|
-
@authority_getter = sym.to_sym
|
29
|
-
end
|
30
|
-
|
31
|
-
def belongs_to_nothing!
|
32
|
-
@belongs_to_nothing = true
|
33
|
-
end
|
34
|
-
|
35
27
|
def belongs_to(sym, opts = {})
|
36
28
|
@owner_class = sym.to_sym
|
37
29
|
define_method @owner_class do
|
@@ -41,6 +33,7 @@ module Rapido
|
|
41
33
|
helper_method @owner_class
|
42
34
|
end
|
43
35
|
@has_one = opts[:has_one]
|
36
|
+
@owners_owner = opts[:owner]
|
44
37
|
return @owner_getter = opts[:getter] if opts[:getter]
|
45
38
|
return owner_lookup_defaults unless opts[:foreign_key]
|
46
39
|
@owner_lookup_field = opts[:foreign_key]
|
@@ -51,11 +44,6 @@ module Rapido
|
|
51
44
|
end
|
52
45
|
end
|
53
46
|
|
54
|
-
def has_many(sym)
|
55
|
-
@owned_resources ||= []
|
56
|
-
@owned_resources << sym
|
57
|
-
end
|
58
|
-
|
59
47
|
def owner_lookup_defaults
|
60
48
|
owner_lookup_param(@owner_class, :id)
|
61
49
|
owner_lookup_field(:id)
|
@@ -70,8 +58,8 @@ module Rapido
|
|
70
58
|
@owner_lookup_field = str.to_sym
|
71
59
|
end
|
72
60
|
|
73
|
-
def
|
74
|
-
@
|
61
|
+
def permit_no_params!
|
62
|
+
@permit_no_params = true
|
75
63
|
end
|
76
64
|
|
77
65
|
def lookup_param(str)
|
@@ -82,66 +70,33 @@ module Rapido
|
|
82
70
|
@resource_permitted_params = ary
|
83
71
|
end
|
84
72
|
|
85
|
-
def free_from_authority!
|
86
|
-
@free_from_authority = true
|
87
|
-
end
|
88
|
-
|
89
73
|
def permit_all_params!
|
90
74
|
@permit_all_params = true
|
91
75
|
end
|
92
76
|
|
93
|
-
def
|
77
|
+
def resource_class_from_controller
|
94
78
|
self.name.split('::')[-1].remove('Controller').singularize.underscore
|
95
79
|
end
|
96
|
-
end
|
97
80
|
|
98
|
-
|
99
|
-
|
100
|
-
def authority
|
101
|
-
@authority ||= begin
|
102
|
-
if setting(:free_from_authority)
|
103
|
-
nil
|
104
|
-
else
|
105
|
-
send(setting(:authority_getter) ||
|
106
|
-
self.class.superclass.instance_variable_get(:@authority_getter))
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def resource_permitted_params
|
112
|
-
@resource_permitted_params ||=
|
113
|
-
setting(:resource_permitted_params)
|
81
|
+
def resource_class_name
|
82
|
+
resource_class_from_controller
|
114
83
|
end
|
84
|
+
end
|
115
85
|
|
116
|
-
|
117
|
-
base = params.require(resource_class_name)
|
118
|
-
if setting(:permit_all_params)
|
119
|
-
base.permit!
|
120
|
-
else
|
121
|
-
base.permit(resource_permitted_params)
|
122
|
-
end
|
123
|
-
end
|
86
|
+
private
|
124
87
|
|
125
88
|
def build_resource(params = {})
|
126
|
-
if setting(:has_one)
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
def resource_collection
|
134
|
-
@resource_collection ||= begin
|
135
|
-
raise RecordNotFound unless setting(:belongs_to_nothing) || owner
|
136
|
-
if setting(:has_one)
|
137
|
-
resource_base.send(resource_class_name)
|
138
|
-
else
|
139
|
-
resource_base.send(resource_class_name.pluralize).page(params[:page])
|
140
|
-
end
|
89
|
+
return owner.send("build_" + resource_class_name, params) if setting(:has_one)
|
90
|
+
return owner.send(resource_class_name.pluralize).build(params) if owner && owner.respond_to?(resource_class_name.pluralize)
|
91
|
+
begin
|
92
|
+
send(:build)
|
93
|
+
rescue NoMethodError
|
94
|
+
raise "Rapido::Controller must belong to something that responds to build or define a build method"
|
141
95
|
end
|
142
96
|
end
|
143
97
|
|
144
98
|
def owner_class
|
99
|
+
return nil unless setting(:owner_class)
|
145
100
|
@owner_class ||= begin
|
146
101
|
name = setting(:owner_class)
|
147
102
|
name.to_s.camelize.constantize
|
@@ -166,62 +121,80 @@ module Rapido
|
|
166
121
|
|
167
122
|
def owner
|
168
123
|
@owner ||= begin
|
169
|
-
if setting(:
|
170
|
-
nil
|
171
|
-
elsif setting(:owner_getter)
|
124
|
+
if setting(:owner_getter)
|
172
125
|
send(setting(:owner_getter))
|
173
|
-
|
174
|
-
if setting(:
|
175
|
-
base =
|
126
|
+
elsif setting(:owner_class)
|
127
|
+
if setting(:owners_owner)
|
128
|
+
base = send(setting(:owners_owner)).send(owner_class_name.pluralize)
|
176
129
|
else
|
177
|
-
base =
|
130
|
+
base = owner_class
|
178
131
|
end
|
179
132
|
base.find_by!(owner_lookup_field => params[owner_lookup_param])
|
133
|
+
else
|
134
|
+
nil
|
180
135
|
end
|
181
136
|
rescue ActiveRecord::RecordNotFound
|
182
137
|
raise RecordNotFound
|
183
138
|
end
|
184
139
|
end
|
185
140
|
|
186
|
-
def resource_base
|
187
|
-
setting(:belongs_to_nothing) ? authority : owner
|
188
|
-
end
|
189
|
-
|
190
141
|
def resource
|
191
142
|
@resource ||= begin
|
192
143
|
if setting(:has_one)
|
193
|
-
|
194
|
-
|
195
|
-
|
144
|
+
owner.send(resource_class_name)
|
145
|
+
elsif owner && owner.respond_to?(resource_class_name.pluralize)
|
146
|
+
owner
|
196
147
|
.send(resource_class_name.pluralize)
|
197
148
|
.find_by!(resource_lookup_param => params[resource_lookup_param])
|
149
|
+
else
|
150
|
+
begin NoMethodError
|
151
|
+
send(:find)
|
152
|
+
rescue
|
153
|
+
raise "Rapido::Controller must belong to something that has many or has one of resource, or define a find method"
|
154
|
+
end
|
198
155
|
end
|
199
156
|
rescue ActiveRecord::RecordNotFound
|
200
157
|
raise RecordNotFound
|
201
158
|
end
|
202
159
|
end
|
203
160
|
|
204
|
-
def
|
205
|
-
@
|
206
|
-
setting(:resource_lookup_param) || :id
|
161
|
+
def resource_class
|
162
|
+
@resource_class ||= resource_class_name.to_s.camelize.constantize
|
207
163
|
end
|
208
164
|
|
209
|
-
def
|
210
|
-
|
211
|
-
|
212
|
-
|
165
|
+
def resource_class_name
|
166
|
+
self.class.resource_class_name
|
167
|
+
end
|
168
|
+
|
169
|
+
# Todo: FIXME
|
170
|
+
def resource_collection
|
171
|
+
@resource_collection ||= begin
|
172
|
+
if setting(:has_one)
|
173
|
+
owner.send(resource_class_name)
|
174
|
+
else
|
175
|
+
owner.send(resource_class_name.pluralize).page(params[:page])
|
176
|
+
end
|
177
|
+
end
|
213
178
|
end
|
214
179
|
|
215
|
-
def
|
216
|
-
@
|
180
|
+
def resource_lookup_param
|
181
|
+
@resource_lookup_param ||=
|
182
|
+
setting(:resource_lookup_param) || :id
|
217
183
|
end
|
218
184
|
|
219
|
-
def
|
220
|
-
|
185
|
+
def resource_permitted_params
|
186
|
+
@resource_permitted_params ||=
|
187
|
+
setting(:resource_permitted_params)
|
221
188
|
end
|
222
189
|
|
223
|
-
def
|
224
|
-
|
190
|
+
def resource_params
|
191
|
+
return {} if setting(:permit_no_params)
|
192
|
+
base = params.require(resource_class_name)
|
193
|
+
if setting(:permit_all_params)
|
194
|
+
base.permit!
|
195
|
+
else
|
196
|
+
base.permit(resource_permitted_params)
|
197
|
+
end
|
225
198
|
end
|
226
199
|
|
227
200
|
def setting(var)
|
data/lib/rapido/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-rapido
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Kirst
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kaminari
|
@@ -78,7 +78,6 @@ files:
|
|
78
78
|
- lib/rapido/api_controller.rb
|
79
79
|
- lib/rapido/app_controller.rb
|
80
80
|
- lib/rapido/app_record_not_found.rb
|
81
|
-
- lib/rapido/app_views.rb
|
82
81
|
- lib/rapido/auth.rb
|
83
82
|
- lib/rapido/auth/api_key.rb
|
84
83
|
- lib/rapido/controller.rb
|
@@ -105,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
104
|
version: '0'
|
106
105
|
requirements: []
|
107
106
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
107
|
+
rubygems_version: 2.6.14
|
109
108
|
signing_key:
|
110
109
|
specification_version: 4
|
111
110
|
summary: Rails API Dryer-o
|
data/lib/rapido/app_views.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module Rapido
|
2
|
-
module AppViews
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
included do
|
6
|
-
before_action do
|
7
|
-
append_view_path (Rapido::Engine.root + 'app/views/rapido')
|
8
|
-
new_path
|
9
|
-
index_path
|
10
|
-
resource_class
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class_methods do
|
15
|
-
def local_prefixes
|
16
|
-
[controller_path, 'app']
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|