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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99f925a26ed45caef1bc7192a910d67de0d25c6e8129dce513b16d828b96b500
4
- data.tar.gz: 9c32e8484c889fd27dbbdae01c6da7eecfd40a10bc444219fdb763c689961e50
3
+ metadata.gz: 55f8eea5d65ce4caa175212c791a16bf9513306f54924b859868f6e62dba4011
4
+ data.tar.gz: 5fad24b510a2b29ab90b77e784b06cf114cb54fb11001dbb582bb2353ba02ac1
5
5
  SHA512:
6
- metadata.gz: 3fddb792095a0eb01d247b64e4ce00fc5a89db2b98b12686eb17a4860667e9ee036ddfad4fc3cb01cc6467e96665c046adc6883386c6c613dc3496a15a614b9d
7
- data.tar.gz: 14e0083dd324cf14aa527bcc08e604d9bf5cab4c9ccbb753a7360a3670a39f43aaa672860a00a54aa11253848c8dbe9a74f6811496fe957546075498e33126fa
6
+ metadata.gz: 4e0242ef6e4a90c2b83f5cfdfd535776f7ec233c227f88d1e6ec2d39d6d9bd766ae8e650b452078d72c30327d3de94a2ac965f3dfa0d988e53a4fc2be6add0d2
7
+ data.tar.gz: 4af78bf8f8ffe06a7ca77f46b34c746db1d137ad53788af62434347db7d7a4769c7b0f4577d9087a368ef215145c92936087d2b26dd96f7912e74467aa5a7479
@@ -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) && object_class.respond_to?(:friendly)
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 = object_class.friendly if friendly_finders?
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
@@ -3,6 +3,6 @@
3
3
  # Crudable Version
4
4
  module Crudable
5
5
  module Rails
6
- VERSION = '1.2'
6
+ VERSION = '1.3'
7
7
  end
8
8
  end
@@ -9,6 +9,8 @@ require 'crudable/rails/nestable'
9
9
 
10
10
  module Crudable
11
11
  module Rails
12
- # Your code goes here...
12
+ def self.deprecator
13
+ @deprecator ||= ActiveSupport::Deprecation.new("2.0", "Crudable::Rails")
14
+ end
13
15
  end
14
16
  end
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.2'
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: 2024-11-29 00:00:00.000000000 Z
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: '2.0'
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: '2.0'
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
- description: CRUD operations for Rails controllers
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: '0'
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.3.26
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: []