effective_resources 2.2.12 → 2.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/app/controllers/concerns/effective/crud_controller/actions.rb +6 -6
- data/app/controllers/concerns/effective/crud_controller/dsl.rb +10 -4
- data/app/controllers/concerns/effective/crud_controller/save.rb +2 -4
- data/app/controllers/concerns/effective/crud_controller/submits.rb +85 -85
- data/app/controllers/concerns/effective/crud_controller.rb +10 -10
- data/app/helpers/effective_resources_helper.rb +14 -4
- data/app/models/effective/resource.rb +2 -1
- data/app/models/effective/resources/attributes.rb +2 -2
- data/app/models/effective/resources/controller.rb +4 -4
- data/app/models/effective/resources/i18n.rb +25 -0
- data/app/models/effective/resources/model.rb +1 -1
- data/app/models/effective/resources/naming.rb +0 -7
- data/lib/effective_resources/version.rb +1 -1
- data/lib/effective_resources.rb +16 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fc4b2cb86902bbdc801204584d765041a0dded527e894eace36d5ea8d923f3f
|
4
|
+
data.tar.gz: ff36581881c3d5dd3667787cf0395c8b6b7b15676e583ac90e85c3e681a02a10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6bf9ede63c06935ee24d72e7b11d78950b7b1b2e3540338513ab18be3570a13e14189252279872f485f1755378ab180f4d3b517ad1e2c2b2564b2a9952035e9
|
7
|
+
data.tar.gz: 72aa0f77cef8f2f8477a50e50990a51eaf592e5889811a689e4a9fa095e5adb072d6cd8c626fd3945e831f22e4fb6b37d53a2b2349648d71320561b7244ad26a
|
@@ -6,7 +6,7 @@ module Effective
|
|
6
6
|
Rails.logger.info 'Processed by Effective::CrudController#index'
|
7
7
|
|
8
8
|
EffectiveResources.authorize!(self, :index, resource_klass)
|
9
|
-
@page_title ||=
|
9
|
+
@page_title ||= resource_human_plural_name
|
10
10
|
|
11
11
|
self.resources ||= resource_scope.all if resource_scope.respond_to?(:all)
|
12
12
|
@datatable = resource_datatable()
|
@@ -42,12 +42,12 @@ module Effective
|
|
42
42
|
|
43
43
|
if (message = flash[:success].to_s).present?
|
44
44
|
flash.delete(:success)
|
45
|
-
flash.now[:success] = "#{message.chomp('.')}. Adding another #{
|
45
|
+
flash.now[:success] = "#{message.chomp('.')}. Adding another #{resource_human_name} based on previous."
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
EffectiveResources.authorize!(self, :new, resource)
|
50
|
-
@page_title ||= "New #{
|
50
|
+
@page_title ||= "New #{resource_human_name}"
|
51
51
|
|
52
52
|
run_callbacks(:resource_render)
|
53
53
|
|
@@ -74,7 +74,7 @@ module Effective
|
|
74
74
|
resource.assign_attributes(send(resource_params_method_name))
|
75
75
|
|
76
76
|
EffectiveResources.authorize!(self, action, resource)
|
77
|
-
@page_title ||= "New #{
|
77
|
+
@page_title ||= "New #{resource_human_name}"
|
78
78
|
|
79
79
|
if save_resource(resource, action)
|
80
80
|
respond_with_success(resource, action)
|
@@ -211,7 +211,7 @@ module Effective
|
|
211
211
|
self.resources ||= resource_scope.all
|
212
212
|
|
213
213
|
EffectiveResources.authorize!(self, action, resource_klass)
|
214
|
-
@page_title ||= "#{action.to_s.titleize} #{
|
214
|
+
@page_title ||= "#{action.to_s.titleize} #{resource_human_name}"
|
215
215
|
|
216
216
|
if request.get?
|
217
217
|
@datatable = resource_datatable()
|
@@ -238,7 +238,7 @@ module Effective
|
|
238
238
|
end.length
|
239
239
|
end
|
240
240
|
|
241
|
-
render json: { status: 200, message: "Successfully #{action_verb(action)} #{successes} / #{resources.length} selected #{
|
241
|
+
render json: { status: 200, message: "Successfully #{action_verb(action)} #{successes} / #{resources.length} selected #{resource_human_plural_name.downcase}" }
|
242
242
|
end
|
243
243
|
end
|
244
244
|
|
@@ -34,8 +34,10 @@ module Effective
|
|
34
34
|
# submit :toggle, 'Blacklist', if: -> { sync? }, class: 'btn btn-primary'
|
35
35
|
# submit :toggle, 'Whitelist', if: -> { !sync? }, class: 'btn btn-primary'
|
36
36
|
# submit :save, 'Save', success: -> { "#{resource} was saved okay!" }
|
37
|
-
def submit(action, label
|
38
|
-
|
37
|
+
def submit(action, label, args = {})
|
38
|
+
instance_exec do
|
39
|
+
before_action { _insert_submit(action, label, args) }
|
40
|
+
end
|
39
41
|
end
|
40
42
|
|
41
43
|
# This controls the resource buttons section of the page
|
@@ -46,13 +48,17 @@ module Effective
|
|
46
48
|
# button :approve, 'Approve', unless: -> { resource.approved? }, redirect: :show
|
47
49
|
# button :decline, false
|
48
50
|
def button(action, label = nil, args = {})
|
49
|
-
|
51
|
+
instance_exec do
|
52
|
+
before_action { _insert_button(action, label, args) }
|
53
|
+
end
|
50
54
|
end
|
51
55
|
|
52
56
|
# This is a way of defining the redirect, flash etc of any action without tweaking defaults
|
53
57
|
# submit and buttons options will be merged ontop of these
|
54
58
|
def on(action, args = {})
|
55
|
-
|
59
|
+
instance_exec do
|
60
|
+
before_action { _insert_on(action, args) }
|
61
|
+
end
|
56
62
|
end
|
57
63
|
|
58
64
|
# page_title 'My Title', only: [:new]
|
@@ -4,10 +4,8 @@ module Effective
|
|
4
4
|
|
5
5
|
# Based on the incoming params[:commit] or passed action. Merges all options.
|
6
6
|
def commit_action(action = nil)
|
7
|
-
|
8
|
-
|
9
|
-
config = self.class.submits
|
10
|
-
ons = self.class.ons
|
7
|
+
config = self.submits()
|
8
|
+
ons = self.ons()
|
11
9
|
|
12
10
|
commit = config[params[:commit].to_s]
|
13
11
|
commit ||= config.find { |_, v| v[:action] == action }.try(:last)
|
@@ -1,122 +1,122 @@
|
|
1
1
|
module Effective
|
2
2
|
module CrudController
|
3
3
|
module Submits
|
4
|
-
extend ActiveSupport::Concern
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
# { 'Approve' => { action: approve, ...}}
|
13
|
-
def buttons
|
14
|
-
@_effective_buttons ||= effective_resource.buttons
|
15
|
-
end
|
16
|
-
|
17
|
-
# { :approve => { redirect: .. }}
|
18
|
-
def ons
|
19
|
-
@_effective_ons ||= effective_resource.ons
|
20
|
-
end
|
5
|
+
# { 'Save' => { action: save, ...}}
|
6
|
+
def submits
|
7
|
+
@_effective_submits ||= effective_resource.submits()
|
8
|
+
end
|
21
9
|
|
22
|
-
|
23
|
-
|
24
|
-
|
10
|
+
# { 'Approve' => { action: approve, ...}}
|
11
|
+
def buttons
|
12
|
+
@_effective_buttons ||= effective_resource.buttons()
|
13
|
+
end
|
25
14
|
|
26
|
-
|
27
|
-
|
28
|
-
|
15
|
+
# { :approve => { redirect: .. }}
|
16
|
+
def ons
|
17
|
+
@_effective_ons ||= effective_resource.ons()
|
18
|
+
end
|
29
19
|
|
30
|
-
|
31
|
-
|
32
|
-
|
20
|
+
# :only, :except, :if, :unless, :redirect, :success, :danger, :class
|
21
|
+
def _insert_submit(action, label = nil, args = {})
|
22
|
+
raise "expected first argument to be a Symbol. Try submit :approve, 'Approve'" unless action.kind_of?(Symbol)
|
23
|
+
raise 'expected args to be a Hash or false' unless args.kind_of?(Hash) || args == false
|
33
24
|
|
34
|
-
|
35
|
-
|
36
|
-
|
25
|
+
if label == false
|
26
|
+
submits.delete_if { |label, args| args[:action] == action }; return
|
27
|
+
end
|
37
28
|
|
38
|
-
|
39
|
-
|
40
|
-
|
29
|
+
if args == false
|
30
|
+
submits.delete(label); return
|
31
|
+
end
|
41
32
|
|
42
|
-
|
43
|
-
|
44
|
-
|
33
|
+
if label # Overwrite the default member action when given a custom submit
|
34
|
+
submits.delete_if { |label, args| args[:default] && args[:action] == action }
|
35
|
+
end
|
45
36
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
37
|
+
if args.key?(:if) && args[:if].respond_to?(:call) == false
|
38
|
+
raise "expected if: to be callable. Try submit :approve, 'Save and Approve', if: -> { resource.finished? }"
|
39
|
+
end
|
50
40
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
41
|
+
if args.key?(:unless) && args[:unless].respond_to?(:call) == false
|
42
|
+
raise "expected unless: to be callable. Try submit :approve, 'Save and Approve', unless: -> { resource.declined? }"
|
43
|
+
end
|
55
44
|
|
56
|
-
|
57
|
-
|
58
|
-
|
45
|
+
if args.key?(:only)
|
46
|
+
args[:only] = Array(args[:only])
|
47
|
+
raise "expected only: to be a symbol or array of symbols. Try submit :approve, 'Save and Approve', only: [:edit]" unless args[:only].all? { |v| v.kind_of?(Symbol) }
|
48
|
+
end
|
59
49
|
|
60
|
-
|
50
|
+
if args.key?(:except)
|
51
|
+
args[:except] = Array(args[:except])
|
52
|
+
raise "expected except: to be a symbol or array of symbols. Try submit :approve, 'Save and Approve', except: [:edit]" unless args[:except].all? { |v| v.kind_of?(Symbol) }
|
53
|
+
end
|
61
54
|
|
62
|
-
|
55
|
+
if args.key?(:redirect_to) # Normalize this option to redirect
|
56
|
+
args[:redirect] = args.delete(:redirect_to)
|
63
57
|
end
|
64
58
|
|
65
|
-
|
66
|
-
raise 'expected args to be a Hash or false' unless args.kind_of?(Hash) || args == false
|
59
|
+
args[:action] = action
|
67
60
|
|
68
|
-
|
69
|
-
|
70
|
-
end
|
61
|
+
(submits[label] ||= {}).merge!(args)
|
62
|
+
end
|
71
63
|
|
72
|
-
|
73
|
-
|
74
|
-
|
64
|
+
def _insert_button(action, label = nil, args = {})
|
65
|
+
raise "expected first argument to be a Symbol. Try button :approve, 'Approve'" unless action.kind_of?(Symbol)
|
66
|
+
raise 'expected args to be a Hash or false' unless args.kind_of?(Hash) || args == false
|
75
67
|
|
76
|
-
|
77
|
-
|
78
|
-
|
68
|
+
if label == false
|
69
|
+
buttons.delete_if { |label, args| args[:action] == action }; return
|
70
|
+
end
|
79
71
|
|
80
|
-
|
81
|
-
|
82
|
-
|
72
|
+
if args == false
|
73
|
+
buttons.delete(label); return
|
74
|
+
end
|
83
75
|
|
84
|
-
|
85
|
-
|
86
|
-
|
76
|
+
if label # Overwrite the default member action when given a custom label
|
77
|
+
buttons.delete_if { |label, args| args[:default] && args[:action] == action }
|
78
|
+
end
|
87
79
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
80
|
+
if args.key?(:if) && args[:if].respond_to?(:call) == false
|
81
|
+
raise "expected if: to be callable. Try button :approve, 'Approve', if: -> { resource.finished? }"
|
82
|
+
end
|
92
83
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
end
|
84
|
+
if args.key?(:unless) && args[:unless].respond_to?(:call) == false
|
85
|
+
raise "expected unless: to be callable. Try button :approve, 'Approve', unless: -> { resource.declined? }"
|
86
|
+
end
|
97
87
|
|
98
|
-
|
99
|
-
|
100
|
-
|
88
|
+
if args.key?(:only)
|
89
|
+
args[:only] = Array(args[:only])
|
90
|
+
raise "expected only: to be a symbol or array of symbols. Try button :approve, 'Save and Approve', only: [:edit]" unless args[:only].all? { |v| v.kind_of?(Symbol) }
|
91
|
+
end
|
101
92
|
|
102
|
-
|
93
|
+
if args.key?(:except)
|
94
|
+
args[:except] = Array(args[:except])
|
95
|
+
raise "expected except: to be a symbol or array of symbols. Try button :approve, 'Save and Approve', except: [:edit]" unless args[:except].all? { |v| v.kind_of?(Symbol) }
|
96
|
+
end
|
103
97
|
|
104
|
-
|
98
|
+
if args.key?(:redirect_to) # Normalize this option to redirect
|
99
|
+
args[:redirect] = args.delete(:redirect_to)
|
105
100
|
end
|
106
101
|
|
107
|
-
|
108
|
-
raise 'expected args to be a Hash' unless args.kind_of?(Hash)
|
102
|
+
args[:action] = action
|
109
103
|
|
110
|
-
|
111
|
-
|
112
|
-
end
|
104
|
+
(buttons[label] ||= {}).merge!(args)
|
105
|
+
end
|
113
106
|
|
114
|
-
|
107
|
+
def _insert_on(action, args = {})
|
108
|
+
raise "expected first argument to be a Symbol. Try on :approve, success: -> { ... }" unless action.kind_of?(Symbol)
|
109
|
+
raise 'expected args to be a Hash' unless args.kind_of?(Hash)
|
115
110
|
|
116
|
-
|
111
|
+
if args.key?(:redirect_to) # Normalize this option to redirect
|
112
|
+
args[:redirect] = args.delete(:redirect_to)
|
117
113
|
end
|
118
|
-
end
|
119
114
|
|
115
|
+
args[:action] = action
|
116
|
+
|
117
|
+
(ons[action] ||= {}).merge!(args)
|
118
|
+
end
|
120
119
|
end
|
120
|
+
|
121
121
|
end
|
122
122
|
end
|
@@ -18,11 +18,7 @@ module Effective
|
|
18
18
|
module ClassMethods
|
19
19
|
include Effective::CrudController::Dsl
|
20
20
|
|
21
|
-
|
22
|
-
# It doesn't really work with the resource_scope correctly but the routes are important here
|
23
|
-
def effective_resource
|
24
|
-
@_effective_resource ||= Effective::Resource.new(controller_path)
|
25
|
-
end
|
21
|
+
def effective_crud_controller?; true; end
|
26
22
|
end
|
27
23
|
|
28
24
|
def resource # @thing
|
@@ -84,6 +80,10 @@ module Effective
|
|
84
80
|
effective_resource.relation
|
85
81
|
end
|
86
82
|
|
83
|
+
def resource_klass # Thing
|
84
|
+
effective_resource.klass
|
85
|
+
end
|
86
|
+
|
87
87
|
def resource_name # 'thing'
|
88
88
|
effective_resource.name
|
89
89
|
end
|
@@ -92,16 +92,16 @@ module Effective
|
|
92
92
|
(effective_resource.name + '_id').to_sym
|
93
93
|
end
|
94
94
|
|
95
|
-
def
|
96
|
-
effective_resource.
|
95
|
+
def resource_plural_name # 'things'
|
96
|
+
effective_resource.plural_name
|
97
97
|
end
|
98
98
|
|
99
|
-
def resource_human_name
|
99
|
+
def resource_human_name # I18n
|
100
100
|
effective_resource.human_name
|
101
101
|
end
|
102
102
|
|
103
|
-
def
|
104
|
-
effective_resource.
|
103
|
+
def resource_human_plural_name # I18n
|
104
|
+
effective_resource.human_plural_name
|
105
105
|
end
|
106
106
|
|
107
107
|
def resource_datatable_attributes
|
@@ -1,10 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module EffectiveResourcesHelper
|
4
|
-
|
5
4
|
# effective_bootstrap
|
6
5
|
def effective_submit(form, options = {}, &block)
|
7
|
-
actions =
|
6
|
+
actions = controller.try(:submits) || raise('controller must be an Effective::CrudController')
|
8
7
|
actions = actions.select { |k, v| v[:default] != true } if options.delete(:defaults) == false
|
9
8
|
actions = permitted_resource_actions(form.object, actions)
|
10
9
|
|
@@ -17,7 +16,7 @@ module EffectiveResourcesHelper
|
|
17
16
|
|
18
17
|
# effective_form_inputs
|
19
18
|
def simple_form_submit(form, options = {}, &block)
|
20
|
-
actions =
|
19
|
+
actions = controller.try(:submits) || raise('controller must be an Effective::CrudController')
|
21
20
|
actions = permitted_resource_actions(form.object, actions)
|
22
21
|
|
23
22
|
submits = actions.map { |name, opts| form.button(:submit, name, opts.except(:action, :title, 'data-method')) }
|
@@ -38,7 +37,7 @@ module EffectiveResourcesHelper
|
|
38
37
|
|
39
38
|
def render_resource_buttons(resource, atts = {}, &block)
|
40
39
|
effective_resource = find_effective_resource
|
41
|
-
actions =
|
40
|
+
actions = controller.try(:buttons) || raise('controller must be an Effective::CrudController')
|
42
41
|
|
43
42
|
actions = if resource.kind_of?(Class)
|
44
43
|
actions.select { |_, v| effective_resource.collection_get_actions.include?(v[:action]) }
|
@@ -301,4 +300,15 @@ module EffectiveResourcesHelper
|
|
301
300
|
path || '/'
|
302
301
|
end
|
303
302
|
|
303
|
+
def effective_translate(resource, attribute = nil)
|
304
|
+
EffectiveResources.et(resource, attribute)
|
305
|
+
end
|
306
|
+
|
307
|
+
def effective_translates(resource, attribute = nil)
|
308
|
+
EffectiveResources.ets(resource, attribute)
|
309
|
+
end
|
310
|
+
|
311
|
+
alias_method :et, :effective_translate
|
312
|
+
alias_method :ets, :effective_translates
|
313
|
+
|
304
314
|
end
|
@@ -8,6 +8,7 @@ module Effective
|
|
8
8
|
include Effective::Resources::Instance
|
9
9
|
include Effective::Resources::Forms
|
10
10
|
include Effective::Resources::Generator
|
11
|
+
include Effective::Resources::I18n
|
11
12
|
include Effective::Resources::Klass
|
12
13
|
include Effective::Resources::Model
|
13
14
|
include Effective::Resources::Naming
|
@@ -31,7 +32,7 @@ module Effective
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def to_s
|
34
|
-
|
35
|
+
human_name
|
35
36
|
end
|
36
37
|
|
37
38
|
end
|
@@ -7,11 +7,11 @@ module Effective
|
|
7
7
|
# This is the attributes as defined by ActiveRecord table
|
8
8
|
# { :name => [:string], ... }
|
9
9
|
def attributes
|
10
|
-
|
10
|
+
klass_attributes.presence || model_attributes.presence
|
11
11
|
end
|
12
12
|
|
13
13
|
def primary_key_attribute
|
14
|
-
{klass.primary_key.to_sym => [:integer]}
|
14
|
+
{ klass.primary_key.to_sym => [:integer] }
|
15
15
|
end
|
16
16
|
|
17
17
|
# The attributes for each belongs_to
|
@@ -54,11 +54,11 @@ module Effective
|
|
54
54
|
end
|
55
55
|
|
56
56
|
if collection_get_actions.find { |a| a == :index }
|
57
|
-
buttons["All #{human_plural_name}"
|
57
|
+
buttons["All #{human_plural_name}"] = { action: :index, default: true }
|
58
58
|
end
|
59
59
|
|
60
60
|
if collection_get_actions.find { |a| a == :new }
|
61
|
-
buttons["New #{human_name}"
|
61
|
+
buttons["New #{human_name}"] = { action: :new, default: true }
|
62
62
|
end
|
63
63
|
|
64
64
|
(collection_get_actions - crud_actions).each do |action|
|
@@ -122,11 +122,11 @@ module Effective
|
|
122
122
|
def resource_klass_actions
|
123
123
|
{}.tap do |buttons|
|
124
124
|
if collection_get_actions.find { |a| a == :index }
|
125
|
-
buttons["All #{human_plural_name}"
|
125
|
+
buttons["All #{human_plural_name}"] = { action: :index, default: true }
|
126
126
|
end
|
127
127
|
|
128
128
|
if collection_get_actions.find { |a| a == :new }
|
129
|
-
buttons["New #{human_name}"
|
129
|
+
buttons["New #{human_name}"] = { action: :new, default: true }
|
130
130
|
end
|
131
131
|
|
132
132
|
(collection_get_actions - crud_actions).each do |action|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Effective
|
4
|
+
module Resources
|
5
|
+
module I18n
|
6
|
+
|
7
|
+
def human_name
|
8
|
+
if klass.respond_to?(:model_name)
|
9
|
+
klass.model_name.human
|
10
|
+
else
|
11
|
+
name.gsub('::', ' ').underscore.gsub('_', ' ')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def human_plural_name
|
16
|
+
if klass.respond_to?(:model_name)
|
17
|
+
klass.model_name.human.pluralize
|
18
|
+
else
|
19
|
+
name.pluralize.gsub('::', ' ').underscore.gsub('_', ' ')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -10,7 +10,7 @@ module Effective
|
|
10
10
|
@model.read(&block)
|
11
11
|
|
12
12
|
# If effective_developer is in live mode, this will cause it to refresh the class
|
13
|
-
ActiveSupport.run_load_hooks(:effective_resource, self)
|
13
|
+
# ActiveSupport.run_load_hooks(:effective_resource, self)
|
14
14
|
end
|
15
15
|
|
16
16
|
def model
|
data/lib/effective_resources.rb
CHANGED
@@ -178,4 +178,20 @@ module EffectiveResources
|
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|
181
|
+
def self.et(resource, attribute = nil)
|
182
|
+
return I18n.t(resource) unless resource.respond_to?(:model_name)
|
183
|
+
|
184
|
+
if attribute.blank?
|
185
|
+
resource.model_name.human
|
186
|
+
elsif resource.respond_to?(:human_attribute_name)
|
187
|
+
resource.human_attribute_name(attribute)
|
188
|
+
else
|
189
|
+
resource.class.human_attribute_name(attribute)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
def self.ets(resource, attribute = nil)
|
194
|
+
et(resource, attribute).pluralize
|
195
|
+
end
|
196
|
+
|
181
197
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_resources
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-02-
|
11
|
+
date: 2023-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -182,6 +182,7 @@ files:
|
|
182
182
|
- app/models/effective/resources/controller.rb
|
183
183
|
- app/models/effective/resources/forms.rb
|
184
184
|
- app/models/effective/resources/generator.rb
|
185
|
+
- app/models/effective/resources/i18n.rb
|
185
186
|
- app/models/effective/resources/init.rb
|
186
187
|
- app/models/effective/resources/instance.rb
|
187
188
|
- app/models/effective/resources/klass.rb
|