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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a056bb244867b2d2970ada94d0085a94ac82f28
4
- data.tar.gz: 4408b3b402c5dc2e3a9f4d3e84a0296eeb8b629c
3
+ metadata.gz: 04bd1cc6e6fd9527fc1b90022653cf1f8d48c041
4
+ data.tar.gz: bb1d6b86f00de708625b1b62f0aeb8363f4e6571
5
5
  SHA512:
6
- metadata.gz: d0aaec6064ddfe0b16a378ff11a6d69fa9b54ab36c7dc7ebc43234e95523fb52a0042b8fafe4b6d6fbe35b55451da4a7de1bd446c32872a626045bcd3f9dffa3
7
- data.tar.gz: a58920ce0a110085221819f8546f3c95e8a9b02528e2594c96256f963a1310d5315af218e4f8a72e1d85a02db4e0ede36c59c49cf00feb47557797c1d76383b9
6
+ metadata.gz: 6ff34955402b0927030447e6cf25314cc0be498ebe8da896d0d490902753fb0d2efd4d9cbf3961f7b2651d0bcf12e3934b2eb27bb88b56159cc411c1245651ef
7
+ data.tar.gz: 2966b6c780cd4b58e85719e338bd2ef7b4780199aaa523bc1d348c474efdd759e866877514f254cd6c2a8ac3a116a26291c1b93c5d57d082b91e7d46b7a764ce
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Rapido
2
2
 
3
3
  [![Code Climate](https://codeclimate.com/github/starfighterheavy/rapido/badges/gpa.svg)](https://codeclimate.com/github/starfighterheavy/rapido)
4
- [![Dependency Status](https://gemnasium.com/starfighterheavy/rapido.svg)](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
 
@@ -2,7 +2,6 @@ require 'rapido/version'
2
2
  require 'rapido/controller'
3
3
  require 'rapido/api_controller'
4
4
  require 'rapido/app_controller'
5
- require 'rapido/app_views'
6
5
  require 'rapido/app_record_not_found'
7
6
  require 'rapido/auth/api_key'
8
7
 
@@ -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
- redirect_to after_create_path(new_resource) unless performed?
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
- redirect_to new_path unless performed?
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
- redirect_to after_delete_path(resource) unless performed?
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
- redirect_to after_update_path(resource) unless performed?
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
- redirect_to edit_path(resource) unless performed?
66
+ return if performed?
67
+ redirect_to edit_path(resource)
63
68
  end
64
69
  end
65
70
 
@@ -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 resource_class(str)
74
- @resource_class = str.to_sym
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 resource_class_name
77
+ def resource_class_from_controller
94
78
  self.name.split('::')[-1].remove('Controller').singularize.underscore
95
79
  end
96
- end
97
80
 
98
- private
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
- def resource_params
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
- resource_base.send("build_" + resource_class_name, params)
128
- else
129
- resource_base.send(resource_class_name.pluralize).build(params)
130
- end
131
- end
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(:belongs_to_nothing)
170
- nil
171
- elsif setting(:owner_getter)
124
+ if setting(:owner_getter)
172
125
  send(setting(:owner_getter))
173
- else
174
- if setting(:free_from_authority)
175
- base = owner_class
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 = authority.send(owner_class_name.pluralize)
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
- resource_base.send(resource_class_name)
194
- else
195
- resource_base
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 resource_lookup_param
205
- @resource_lookup_param ||=
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 resource_class
210
- @resource_class ||=
211
- (setting(:resource_class) ||
212
- resource_class_from_controller).to_s.camelize.constantize
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 resource_class_name(name = nil)
216
- @resource_class_name ||= resource_class.name.underscore
180
+ def resource_lookup_param
181
+ @resource_lookup_param ||=
182
+ setting(:resource_lookup_param) || :id
217
183
  end
218
184
 
219
- def resource_class_from_controller
220
- self.class.name.split('::')[-1].remove('Controller').singularize.underscore
185
+ def resource_permitted_params
186
+ @resource_permitted_params ||=
187
+ setting(:resource_permitted_params)
221
188
  end
222
189
 
223
- def owned_resources
224
- @owned_resources ||= setting(:owned_resources) || []
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)
@@ -1,3 +1,3 @@
1
1
  module Rapido
2
- VERSION = '0.3.9'
2
+ VERSION = '0.4.0'
3
3
  end
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.3.9
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-03-16 00:00:00.000000000 Z
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.5.2
107
+ rubygems_version: 2.6.14
109
108
  signing_key:
110
109
  specification_version: 4
111
110
  summary: Rails API Dryer-o
@@ -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
-