action_crud 0.1.7 → 0.1.8

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: 7604a6d2c7f6ef445f45e33267b9eddddb979ea4c5e99160b1bba15c3df2fb0b
4
- data.tar.gz: f795a5d78f4c6bb05fad1728ec10e8e894e1c7c30a5f0a63fadf55b564a0ee68
3
+ metadata.gz: c20e55aaf0acfe2a95c431b090cafedd3ea5718ed8e73e4995281782dc0c969b
4
+ data.tar.gz: 0c297533a30364e41575d82efb723484f035aab02d6cfb8f84c3ab6186f18a57
5
5
  SHA512:
6
- metadata.gz: 4a26a94dbd54231ee2d109653ee0c982a90ad595ec35e846cd8779304f4f21470bd99e5433ba7776c4377d64765d98bc9c2a59bb04cbdbda75cd590e7e2fe9ff
7
- data.tar.gz: 4d38fa4c8b86130ff2f33cfef33fc57658940ca68684ce793cde33da66b09ed4f73f6ee58a118141e797cc81dad8313630edba9c2a12d4c38abf4fa62766f018
6
+ metadata.gz: ee2214afeb91977c9959eda5122a57d7389617789eeab0fad6884f099453d237c4052c1b14c7ff0dcbd6a63915fa5634f64e0ae0ed93f62488bc6a28b06c7f18
7
+ data.tar.gz: 0276fafa9641249240ebbf6b7e25a93e55a797042502ffab2f5e37a8b7b48dce22ccee6f0d716ec4e2486265fa77febd878fd7a81b89a8bc490b29057ab604c4
@@ -11,19 +11,16 @@ module ActionCrud
11
11
  extend ActiveSupport::Concern
12
12
 
13
13
  included do
14
- # Include submodules
15
14
  include ActionCrud::Controller
16
15
  include ActionCrud::Pagination
17
16
  end
18
17
  end
19
18
 
20
- # Include action view helpers
21
19
  if defined? ActionView::Base
22
20
  ActionView::Base.send :include, ActionCrud::Helpers::Url
23
21
  ActionView::Base.send :include, ActionCrud::Helpers::View
24
22
  end
25
23
 
26
- # Include action controller helpers
27
24
  if defined? ActionController::Base
28
25
  ActionController::Base.send :include, ActionCrud::Helpers::Url
29
26
  end
@@ -3,7 +3,6 @@ module ActionCrud
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- # Class attributes
7
6
  class_attribute :namespace, instance_predicate: false
8
7
  class_attribute :model_name, instance_predicate: false
9
8
  class_attribute :model_class, instance_predicate: false
@@ -12,21 +11,17 @@ module ActionCrud
12
11
  class_attribute :index_scope, instance_predicate: false
13
12
  class_attribute :permitted_params, instance_predicate: false
14
13
 
15
- # Class attributes defaults
16
14
  self.permitted_params = []
17
15
 
18
- # Set class attributes
19
16
  set_model_name
20
17
  set_index_scope
21
18
 
22
- # Action callbacks
23
19
  before_action :set_record, only: [:show, :edit, :update, :destroy]
24
20
  before_action :set_permitted_params, if: -> { permitted_params.empty? }
25
21
  end
26
22
 
27
23
  class_methods do
28
- # Set permitted parameters
29
- def permit_params(options={})
24
+ def permit_params(options = {})
30
25
  attribs = model_class.try(:attribute_names).to_a
31
26
  default = { only: attribs, except: [], also: [], array: [], hash: [] }
32
27
  options = Hash[default.merge(options).map { |k, v| [k, Array(v).map(&:to_sym)] }]
@@ -39,14 +34,12 @@ module ActionCrud
39
34
  self.permitted_params = permit
40
35
  end
41
36
 
42
- # Set namespace to remove from model
43
- def set_namespace(name=nil)
37
+ def set_namespace(name = nil)
44
38
  self.namespace = name
45
39
  set_model_name
46
40
  end
47
41
 
48
- # Set model name
49
- def set_model_name(name=nil)
42
+ def set_model_name(name = nil)
50
43
  name = name || _guess_controller_model
51
44
  name = name.constantize if name.is_a? String
52
45
 
@@ -59,27 +52,25 @@ module ActionCrud
59
52
  end
60
53
  end
61
54
 
62
- # Set model class
63
- def set_model_class(klass=nil)
55
+ def set_model_class(klass = nil)
64
56
  klass = klass.constantize if klass.is_a? String
65
57
  self.model_class = klass || model_name.instance_variable_get('@klass')
66
58
  end
67
59
 
68
- # Set index scope
69
- def set_index_scope(scope='all')
60
+ def set_index_scope(scope = 'all')
70
61
  self.index_scope = scope.to_sym
71
62
  end
72
63
 
73
64
  private
74
65
 
75
- def _guess_controller_model
76
- if namespace.nil?
77
- controller_name.classify.safe_constantize ||
78
- name.gsub(/controller$/i, '').classify.safe_constantize
79
- else
80
- name.gsub(/^#{namespace.to_s}|controller$/i, '').classify.safe_constantize
81
- end
66
+ def _guess_controller_model
67
+ if namespace.nil?
68
+ controller_name.classify.safe_constantize ||
69
+ name.gsub(/controller$/i, '').classify.safe_constantize
70
+ else
71
+ name.gsub(/^#{namespace.to_s}|controller$/i, '').classify.safe_constantize
82
72
  end
73
+ end
83
74
  end
84
75
 
85
76
  # GET /model
@@ -158,21 +149,18 @@ module ActionCrud
158
149
  end
159
150
  end
160
151
 
161
- # Get model
162
152
  def model
163
153
  record.nil? ? model_class : record.class
164
154
  end
165
155
 
166
156
  alias :current_model :model
167
157
 
168
- # Get single record
169
158
  def record
170
159
  instance_variable_get "@#{instance_name}"
171
160
  end
172
161
 
173
162
  alias :current_record :record
174
163
 
175
- # Get records collection
176
164
  def records
177
165
  instance_variable_get "@#{collection_name}"
178
166
  end
@@ -181,37 +169,31 @@ module ActionCrud
181
169
 
182
170
  private
183
171
 
184
- # Set single record
185
- def record=(value)
186
- instance_variable_set "@#{instance_name}", value
187
- end
172
+ def record=(value)
173
+ instance_variable_set "@#{instance_name}", value
174
+ end
188
175
 
189
- # Set records collection
190
- def records=(value)
191
- instance_variable_set "@#{collection_name}", value
192
- end
176
+ def records=(value)
177
+ instance_variable_set "@#{collection_name}", value
178
+ end
193
179
 
194
- # Use callbacks to share common setup or constraints between actions.
195
- def set_record
196
- self.record = model.find(params[:id])
197
- end
180
+ def set_record
181
+ self.record = model.find(params[:id])
182
+ end
198
183
 
199
- # Only allow a trusted parameter "white list" through.
200
- def record_params
201
- params.require(:"#{instance_name}").permit permitted_params
202
- end
184
+ def record_params
185
+ params.require(:"#{instance_name}").permit permitted_params
186
+ end
203
187
 
204
- # Set permitted params from record/model if not set in controller.
205
- def set_permitted_params
206
- att_method = :permitted_attributes
207
- attributes = record.try(att_method) || model.try(att_method)
188
+ def set_permitted_params
189
+ att_method = :permitted_attributes
190
+ attributes = record.try(att_method) || model.try(att_method)
208
191
 
209
- self.permitted_params = Array(attributes)
210
- end
192
+ self.permitted_params = Array(attributes)
193
+ end
211
194
 
212
- # Check if model responds to search
213
- def should_search?
214
- params[:search].present? and model.respond_to? :search
215
- end
195
+ def should_search?
196
+ params[:search].present? && model.respond_to?(:search)
197
+ end
216
198
  end
217
199
  end
@@ -3,8 +3,7 @@ module ActionCrud
3
3
  class Link
4
4
  attr_accessor :record, :action, :label, :options
5
5
 
6
- # Initialize link generator
7
- def initialize(context, record=nil, action=nil, *args)
6
+ def initialize(context, record = nil, action = nil, *args)
8
7
  @options = args.extract_options!
9
8
  @context = context
10
9
  @record = record || @context.try(:current_record)
@@ -12,27 +11,21 @@ module ActionCrud
12
11
  @label = options.fetch :label, nil
13
12
  @options = options.except :label
14
13
 
15
- if delete?
16
- @options.reverse_merge!(method: :delete, data: { confirm: 'Are you sure?' })
17
- end
14
+ @options.reverse_merge!(method: :delete, data: { confirm: 'Are you sure?' }) if delete?
18
15
  end
19
16
 
20
- # Is delete action
21
17
  def delete?
22
18
  action.in? [:delete, :destroy]
23
19
  end
24
20
 
25
- # Get link label
26
21
  def action_label
27
22
  label || "#{action}".humanize
28
23
  end
29
24
 
30
- # Get record path
31
25
  def record_path
32
26
  ActionCrud::Helpers::Route.new(@context, record, action).path || "#{action}"
33
27
  end
34
28
 
35
- # Render multiple
36
29
  def render_multiple(*args)
37
30
  default = options
38
31
  options = args.extract_options!
@@ -47,7 +40,6 @@ module ActionCrud
47
40
  links.join.html_safe
48
41
  end
49
42
 
50
- # Render link
51
43
  def render
52
44
  @context.link_to action_label, record_path, options if record_path.present?
53
45
  end
@@ -3,8 +3,7 @@ module ActionCrud
3
3
  class Route
4
4
  attr_accessor :model, :record, :action, :options, :path, :url
5
5
 
6
- # Intialize url finder
7
- def initialize(context, record=nil, action=nil, *options)
6
+ def initialize(context, record = nil, action = nil, *options)
8
7
  @context = context
9
8
  @record = record || @context.try(:current_record)
10
9
  @action = action
@@ -13,24 +12,18 @@ module ActionCrud
13
12
  @url = route_uri false
14
13
  end
15
14
 
16
- # To string
17
- def to_s(type=:path)
15
+ def to_s(type = :path)
18
16
  instance_variable_get("@#{type}").to_s
19
17
  end
20
18
 
21
- # Should include record
22
19
  def record?
23
20
  action.in? [:show, :edit, :delete, :destroy]
24
21
  end
25
22
 
26
- # Get model name
27
- def model(method='singular')
28
- unless @record.nil?
29
- @record.class.model_name.send(method).to_sym
30
- end
23
+ def model(method = 'singular')
24
+ @record.class.model_name.send(method).to_sym unless @record.nil?
31
25
  end
32
26
 
33
- # Get route namespace
34
27
  def namespace
35
28
  if @context.respond_to? :controller
36
29
  @context.controller.try(:namespace)
@@ -39,7 +32,6 @@ module ActionCrud
39
32
  end
40
33
  end
41
34
 
42
- # Get namespaced record
43
35
  def namespaced_record
44
36
  if action == :edit
45
37
  namespace.present? ? [:edit, namespace, record] : [:edit, record]
@@ -48,7 +40,6 @@ module ActionCrud
48
40
  end
49
41
  end
50
42
 
51
- # Get namespaced model
52
43
  def namespaced_model
53
44
  if action == :new
54
45
  namespace.present? ? [:new, namespace, model] : [:new, model]
@@ -57,8 +48,7 @@ module ActionCrud
57
48
  end
58
49
  end
59
50
 
60
- # Find route method
61
- def route_uri(only_path=false)
51
+ def route_uri(only_path = false)
62
52
  args = record? ? namespaced_record : namespaced_model
63
53
  args = [args, options.merge(only_path: only_path)].flatten.reject(&:blank?)
64
54
 
@@ -1,7 +1,6 @@
1
1
  module ActionCrud
2
2
  module Helpers
3
3
  module Url
4
- # Get record path
5
4
  def record_path(*args)
6
5
  options = args.extract_options!
7
6
  record = args.first
@@ -9,7 +8,6 @@ module ActionCrud
9
8
  ActionCrud::Helpers::Route.new(self, record, :show, options).path
10
9
  end
11
10
 
12
- # Get record absolute url
13
11
  def record_url(*args)
14
12
  options = args.extract_options!
15
13
  record = args.first
@@ -17,7 +15,6 @@ module ActionCrud
17
15
  ActionCrud::Helpers::Route.new(self, record, :show, options).url
18
16
  end
19
17
 
20
- # Get records index path
21
18
  def records_path(*args)
22
19
  options = args.extract_options!
23
20
  record = args.first
@@ -25,7 +22,6 @@ module ActionCrud
25
22
  ActionCrud::Helpers::Route.new(self, record, :index, options).path
26
23
  end
27
24
 
28
- # Get records index absolute url
29
25
  def records_url(*args)
30
26
  options = args.extract_options!
31
27
  record = args.first
@@ -33,7 +29,6 @@ module ActionCrud
33
29
  ActionCrud::Helpers::Route.new(self, record, :index, options).url
34
30
  end
35
31
 
36
- # Get record new path
37
32
  def new_record_path(*args)
38
33
  options = args.extract_options!
39
34
  record = args.first
@@ -41,7 +36,6 @@ module ActionCrud
41
36
  ActionCrud::Helpers::Route.new(self, record, :new, options).path
42
37
  end
43
38
 
44
- # Get record new absolute url
45
39
  def new_record_url(*args)
46
40
  options = args.extract_options!
47
41
  record = args.first
@@ -49,7 +43,6 @@ module ActionCrud
49
43
  ActionCrud::Helpers::Route.new(self, record, :new, options).url
50
44
  end
51
45
 
52
- # Get record edit path
53
46
  def edit_record_path(*args)
54
47
  options = args.extract_options!
55
48
  record = args.first
@@ -57,7 +50,6 @@ module ActionCrud
57
50
  ActionCrud::Helpers::Route.new(self, record, :edit, options).path
58
51
  end
59
52
 
60
- # Get record edit absolute url
61
53
  def edit_record_url(*args)
62
54
  options = args.extract_options!
63
55
  record = args.first
@@ -1,27 +1,22 @@
1
1
  module ActionCrud
2
2
  module Helpers
3
3
  module View
4
- # Get current model
5
4
  def current_model
6
5
  controller.try(:current_model)
7
6
  end
8
7
 
9
- # Get current record
10
8
  def current_record
11
9
  controller.try(:current_record) || current_model.try(:new)
12
10
  end
13
11
 
14
- # Get current records
15
12
  def current_records
16
13
  controller.try(:current_records) || []
17
14
  end
18
15
 
19
- # Get permitted parameters
20
16
  def permitted_params
21
17
  controller.try(:permitted_params) || []
22
18
  end
23
19
 
24
- # Get record link
25
20
  def record_link_to(record=nil, *args)
26
21
  options = args.extract_options!
27
22
  action = args.first
@@ -29,7 +24,6 @@ module ActionCrud
29
24
  ActionCrud::Helpers::Link.new(self, record, action, options).render
30
25
  end
31
26
 
32
- # Get record links
33
27
  def record_links_to(record=nil, *args)
34
28
  options = args.extract_options!
35
29
  default = options.fetch :html, {}
@@ -3,18 +3,14 @@ module ActionCrud
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- # Class attributes
7
6
  class_attribute :per_page, instance_predicate: false
8
7
 
9
- # Class attributes defaults
10
8
  self.per_page = 20
11
9
 
12
- # Action callbacks
13
10
  before_action :set_pagination_params, only: [:index]
14
11
  end
15
12
 
16
13
  class_methods do
17
- # Set per page limit
18
14
  def set_per_page(limit)
19
15
  self.per_page = limit.to_i
20
16
  end
@@ -22,36 +18,32 @@ module ActionCrud
22
18
 
23
19
  private
24
20
 
25
- # Get pagination params
26
- def pagination_params
27
- @pagination_params ||= params.permit(:page, :per_page).to_h.deep_symbolize_keys
28
- end
21
+ def pagination_params
22
+ @pagination_params ||= params.permit(:page, :per_page).to_h.deep_symbolize_keys
23
+ end
29
24
 
30
- # Set pagination parameters
31
- def set_pagination_params
32
- pagination = pagination_params[:page].is_a?(Hash) ? pagination_params[:page] : {}
33
- pagination_params[:page] = pagination[:number] || pagination_params.fetch(:page, 1)
34
- pagination_params[:per_page] = pagination[:size] || pagination_params.fetch(:per_page, per_page)
35
- end
25
+ def set_pagination_params
26
+ pagination = pagination_params[:page].is_a?(Hash) ? pagination_params[:page] : {}
27
+ pagination_params[:page] = pagination[:number] || pagination_params.fetch(:page, 1)
28
+ pagination_params[:per_page] = pagination[:size] || pagination_params.fetch(:per_page, per_page)
29
+ end
36
30
 
37
- # Paginate records
38
- def paginate(records)
39
- if records.respond_to? :paginate
40
- records.paginate(pagination_params.select { |k, _v| k.in? [:page, :per_page] })
41
- else
42
- records
43
- end
31
+ def paginate(records)
32
+ if records.respond_to? :paginate
33
+ records.paginate(pagination_params.select { |k, _v| k.in? [:page, :per_page] })
34
+ else
35
+ records
44
36
  end
37
+ end
45
38
 
46
- # Pagination metadata
47
- def pagination_meta(records)
48
- {
49
- current_page: pagination_params.fetch(:page, 1).to_i,
50
- next_page: records.try(:next_page),
51
- previous_page: records.try(:previous_page),
52
- total_pages: records.try(:total_pages),
53
- total_entries: records.try(:total_entries)
54
- }
55
- end
39
+ def pagination_meta(records)
40
+ {
41
+ current_page: pagination_params.fetch(:page, 1).to_i,
42
+ next_page: records.try(:next_page),
43
+ previous_page: records.try(:previous_page),
44
+ total_pages: records.try(:total_pages),
45
+ total_entries: records.try(:total_entries)
46
+ }
47
+ end
56
48
  end
57
49
  end
@@ -1,3 +1,3 @@
1
1
  module ActionCrud
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_crud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonian Guveli
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-03 00:00:00.000000000 Z
11
+ date: 2020-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -104,8 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0'
106
106
  requirements: []
107
- rubyforge_project:
108
- rubygems_version: 2.7.7
107
+ rubygems_version: 3.0.6
109
108
  signing_key:
110
109
  specification_version: 4
111
110
  summary: Inherited restful actions