crudable-rails 1.2 → 1.3
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/lib/crudable/rails/base.rb +14 -3
- data/lib/crudable/rails/engine.rb +4 -0
- data/lib/crudable/rails/nestable.rb +1 -1
- data/lib/crudable/rails/resourceable.rb +4 -0
- data/lib/crudable/rails/version.rb +1 -1
- data/lib/crudable-rails.rb +3 -1
- metadata +31 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 55f8eea5d65ce4caa175212c791a16bf9513306f54924b859868f6e62dba4011
|
|
4
|
+
data.tar.gz: 5fad24b510a2b29ab90b77e784b06cf114cb54fb11001dbb582bb2353ba02ac1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4e0242ef6e4a90c2b83f5cfdfd535776f7ec233c227f88d1e6ec2d39d6d9bd766ae8e650b452078d72c30327d3de94a2ac965f3dfa0d988e53a4fc2be6add0d2
|
|
7
|
+
data.tar.gz: 4af78bf8f8ffe06a7ca77f46b34c746db1d137ad53788af62434347db7d7a4769c7b0f4577d9087a368ef215145c92936087d2b26dd96f7912e74467aa5a7479
|
data/lib/crudable/rails/base.rb
CHANGED
|
@@ -9,6 +9,7 @@ module Crudable
|
|
|
9
9
|
include Crudable::Rails::Resourceable
|
|
10
10
|
|
|
11
11
|
before_action :find_resource, only: %i[show edit update destroy]
|
|
12
|
+
before_action :authorize_class_action, only: %i[index] if defined?(Pundit)
|
|
12
13
|
after_action :authorize_resource, only: %i[new show edit] if defined?(Pundit)
|
|
13
14
|
|
|
14
15
|
decorates_assigned plural_resource_var_name.to_sym, resource_var_name.to_sym if defined?(Draper)
|
|
@@ -120,7 +121,7 @@ module Crudable
|
|
|
120
121
|
end
|
|
121
122
|
|
|
122
123
|
def friendly_finders?
|
|
123
|
-
return false unless defined?(FriendlyId) &&
|
|
124
|
+
return false unless defined?(FriendlyId) && resource_class.respond_to?(:friendly)
|
|
124
125
|
|
|
125
126
|
true
|
|
126
127
|
end
|
|
@@ -216,14 +217,14 @@ module Crudable
|
|
|
216
217
|
|
|
217
218
|
def on_failed_create_render
|
|
218
219
|
respond_to do |format|
|
|
219
|
-
format.turbo_stream
|
|
220
|
+
format.turbo_stream { render_action(:new) }
|
|
220
221
|
format.html { render :new, status: :unprocessable_entity }
|
|
221
222
|
end
|
|
222
223
|
end
|
|
223
224
|
|
|
224
225
|
def on_failed_update_render
|
|
225
226
|
respond_to do |format|
|
|
226
|
-
format.turbo_stream
|
|
227
|
+
format.turbo_stream { render_action(:edit) }
|
|
227
228
|
format.html { render :edit, status: :unprocessable_entity }
|
|
228
229
|
end
|
|
229
230
|
end
|
|
@@ -243,6 +244,16 @@ module Crudable
|
|
|
243
244
|
def permitted_params
|
|
244
245
|
raise NotImplementedError, 'You must implement permitted_params in your controller'
|
|
245
246
|
end
|
|
247
|
+
|
|
248
|
+
def render_action(default_action_name)
|
|
249
|
+
logger.debug "Rendering relevant action for #{controller_path}/#{default_action_name} as #{request.format.symbol}"
|
|
250
|
+
return render default_action_name if lookup_context.template_exists?("#{controller_path}/#{default_action_name}")
|
|
251
|
+
|
|
252
|
+
Crudable::Rails.deprecator.warn("Rendering fallback: #{action_name}, format: #{request.format.symbol}. Rename your template to #{default_action_name}")
|
|
253
|
+
|
|
254
|
+
logger.debug "Rendering fallback: #{action_name}"
|
|
255
|
+
render
|
|
256
|
+
end
|
|
246
257
|
end
|
|
247
258
|
end
|
|
248
259
|
end
|
|
@@ -4,6 +4,10 @@ module Crudable
|
|
|
4
4
|
ActiveSupport.on_load(:action_controller) do
|
|
5
5
|
::ActionController::Base.include Crudable::Rails::Controller
|
|
6
6
|
end
|
|
7
|
+
|
|
8
|
+
initializer "crudable-rails.deprecator" do |app|
|
|
9
|
+
app.deprecators[:crudable_rails] = Crudable::Rails.deprecator
|
|
10
|
+
end
|
|
7
11
|
end
|
|
8
12
|
end
|
|
9
13
|
end
|
|
@@ -16,7 +16,7 @@ module Crudable
|
|
|
16
16
|
|
|
17
17
|
object_name = Regexp.last_match(1)
|
|
18
18
|
object_scope = object_name.classify.constantize
|
|
19
|
-
object_scope =
|
|
19
|
+
object_scope = object_scope.friendly if friendly_finders?
|
|
20
20
|
instance_variable_set("@#{object_name}", object_scope.find(value))
|
|
21
21
|
self.class.send(:decorates_assigned, object_name.to_sym) if defined?(Draper)
|
|
22
22
|
end
|
|
@@ -38,6 +38,10 @@ module Crudable
|
|
|
38
38
|
authorize resource_namespace + [authorizable_resource], "#{method}?".to_sym
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
def authorize_class_action(method = action_name)
|
|
42
|
+
authorize([*resource_namespace, resource_class], "#{method}?".to_sym)
|
|
43
|
+
end
|
|
44
|
+
|
|
41
45
|
def authorizable_resource
|
|
42
46
|
instance_variable_get("@#{resource_var_name}")
|
|
43
47
|
end
|
data/lib/crudable-rails.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: crudable-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.3'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tomislav Simnett
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: rails
|
|
@@ -17,6 +16,9 @@ dependencies:
|
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
18
|
version: '7.0'
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 9.0.0
|
|
20
22
|
type: :runtime
|
|
21
23
|
prerelease: false
|
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -24,20 +26,23 @@ dependencies:
|
|
|
24
26
|
- - ">="
|
|
25
27
|
- !ruby/object:Gem::Version
|
|
26
28
|
version: '7.0'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: 9.0.0
|
|
27
32
|
- !ruby/object:Gem::Dependency
|
|
28
33
|
name: turbo-rails
|
|
29
34
|
requirement: !ruby/object:Gem::Requirement
|
|
30
35
|
requirements:
|
|
31
|
-
- - "
|
|
36
|
+
- - "~>"
|
|
32
37
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
38
|
+
version: 2.0.0
|
|
34
39
|
type: :runtime
|
|
35
40
|
prerelease: false
|
|
36
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
42
|
requirements:
|
|
38
|
-
- - "
|
|
43
|
+
- - "~>"
|
|
39
44
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
45
|
+
version: 2.0.0
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
|
42
47
|
name: rubocop
|
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -45,6 +50,9 @@ dependencies:
|
|
|
45
50
|
- - ">="
|
|
46
51
|
- !ruby/object:Gem::Version
|
|
47
52
|
version: '1.50'
|
|
53
|
+
- - "<"
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: '2.0'
|
|
48
56
|
type: :development
|
|
49
57
|
prerelease: false
|
|
50
58
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -52,6 +60,9 @@ dependencies:
|
|
|
52
60
|
- - ">="
|
|
53
61
|
- !ruby/object:Gem::Version
|
|
54
62
|
version: '1.50'
|
|
63
|
+
- - "<"
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
65
|
+
version: '2.0'
|
|
55
66
|
- !ruby/object:Gem::Dependency
|
|
56
67
|
name: mocha
|
|
57
68
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -59,6 +70,9 @@ dependencies:
|
|
|
59
70
|
- - ">="
|
|
60
71
|
- !ruby/object:Gem::Version
|
|
61
72
|
version: '2.6'
|
|
73
|
+
- - "<"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: 3.0.0
|
|
62
76
|
type: :development
|
|
63
77
|
prerelease: false
|
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -66,7 +80,14 @@ dependencies:
|
|
|
66
80
|
- - ">="
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
82
|
version: '2.6'
|
|
69
|
-
|
|
83
|
+
- - "<"
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: 3.0.0
|
|
86
|
+
description: Crudable Rails provides everything needed to quickly build fully functional
|
|
87
|
+
CRUD-based controllers in a Rails application. It streamlines resource management,
|
|
88
|
+
reduces boilerplate, and enforces best practices for handling requests, responses,
|
|
89
|
+
and strong parameters. Ideal for developers looking to accelerate Rails development
|
|
90
|
+
while maintaining flexibility and clean architecture.
|
|
70
91
|
email:
|
|
71
92
|
- tom@initforthe.com
|
|
72
93
|
executables: []
|
|
@@ -89,7 +110,6 @@ homepage: https://gitlab.com/initforthe/crudable-rails
|
|
|
89
110
|
licenses:
|
|
90
111
|
- MIT
|
|
91
112
|
metadata: {}
|
|
92
|
-
post_install_message:
|
|
93
113
|
rdoc_options: []
|
|
94
114
|
require_paths:
|
|
95
115
|
- lib
|
|
@@ -97,15 +117,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
97
117
|
requirements:
|
|
98
118
|
- - ">="
|
|
99
119
|
- !ruby/object:Gem::Version
|
|
100
|
-
version:
|
|
120
|
+
version: 3.0.0
|
|
101
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
122
|
requirements:
|
|
103
123
|
- - ">="
|
|
104
124
|
- !ruby/object:Gem::Version
|
|
105
125
|
version: '0'
|
|
106
126
|
requirements: []
|
|
107
|
-
rubygems_version: 3.
|
|
108
|
-
signing_key:
|
|
127
|
+
rubygems_version: 3.7.1
|
|
109
128
|
specification_version: 4
|
|
110
129
|
summary: CRUD operations for Rails controllers
|
|
111
130
|
test_files: []
|