administrate 0.19.0 → 0.20.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a94bb51af4fa730f84d042f402122cc3073894e67494309dab4621b5f39b36fa
4
- data.tar.gz: 57e7d78f316c635be65735e5c4220bd4e8d777c29c1d92741ab2520998080cde
3
+ metadata.gz: 8e5544a7c600e80f4f0059f7b4aea8903e46d926b06dea598660baa758ed67ec
4
+ data.tar.gz: b4aefefcdb03dc10c0570e8d6b1a15629c4a3cee9f5ceb46d306e2b3a57e2454
5
5
  SHA512:
6
- metadata.gz: 4d7b0a4b21404d16b48a5545e57202b73b3d782e23a5b26b5ed9e52ab3a66069717e23b1e099727eba9ff99315ba757d8ad0b739895a56775fbb5f3f8279df29
7
- data.tar.gz: 07cc800c0c7cca79231ac047d10120ef63ec1c7d95aa5dccac9c7b1b5a99cafaccc2c31165c7350920721e622063190b0f804fb05d1e436c518511639802d4bd
6
+ metadata.gz: 18ac7ba09f2f7e36d5c86d492fda86cf2f31239146bcac7dacd47eb124fc793e9c425f1646cdcdcce8a672b1666322b6178cf5a602bc358d794e315050f94d02
7
+ data.tar.gz: 183d4aafdeeef34031acf4f0fbd29401d39ad368a2b889d509d36560dfcd2b222043ddde8504fddfddcf505017467e6eec74848c422b960233b3492e9198e06d
@@ -2,6 +2,7 @@
2
2
  @include administrate-clearfix;
3
3
  align-items: center;
4
4
  display: flex;
5
+ flex-wrap: wrap;
5
6
  margin-bottom: $base-spacing;
6
7
  position: relative;
7
8
  width: 100%;
@@ -25,6 +26,12 @@
25
26
  }
26
27
  }
27
28
 
29
+ .field-unit__hint {
30
+ font-size: 90%;
31
+ margin-left: calc(15% + 2rem);
32
+ width: 100%;
33
+ }
34
+
28
35
  .field-unit--nested {
29
36
  border: $base-border;
30
37
  margin-left: 7.5%;
@@ -44,6 +44,7 @@ module Administrate
44
44
  authorize_resource(resource)
45
45
 
46
46
  if resource.save
47
+ yield(resource) if block_given?
47
48
  redirect_to(
48
49
  after_resource_created_path(resource),
49
50
  notice: translate_with_resource("create.success"),
@@ -9,31 +9,27 @@ module Administrate
9
9
  include Pundit
10
10
  end
11
11
 
12
- included do
13
- private
14
-
15
- def policy_namespace
16
- []
17
- end
12
+ private
18
13
 
19
- def scoped_resource
20
- namespaced_scope = policy_namespace + [super]
21
- policy_scope!(pundit_user, namespaced_scope)
22
- end
14
+ def policy_namespace
15
+ []
16
+ end
23
17
 
24
- def authorize_resource(resource)
25
- namespaced_resource = policy_namespace + [resource]
26
- authorize namespaced_resource
27
- end
18
+ def scoped_resource
19
+ namespaced_scope = policy_namespace + [super]
20
+ policy_scope!(pundit_user, namespaced_scope)
21
+ end
28
22
 
29
- def authorized_action?(resource, action)
30
- namespaced_resource = policy_namespace + [resource]
31
- policy = Pundit.policy!(pundit_user, namespaced_resource)
32
- policy.send("#{action}?".to_sym)
33
- end
23
+ def authorize_resource(resource)
24
+ namespaced_resource = policy_namespace + [resource]
25
+ authorize namespaced_resource
34
26
  end
35
27
 
36
- private
28
+ def authorized_action?(resource, action)
29
+ namespaced_resource = policy_namespace + [resource]
30
+ policy = Pundit.policy!(pundit_user, namespaced_resource)
31
+ policy.send("#{action}?".to_sym)
32
+ end
37
33
 
38
34
  def policy_scope!(user, scope)
39
35
  policy_scope_class = Pundit::PolicyFinder.new(scope).scope!
@@ -46,7 +42,7 @@ module Administrate
46
42
  end
47
43
 
48
44
  if policy_scope.respond_to? :resolve_admin
49
- ActiveSupport::Deprecation.warn(
45
+ Administrate.deprecator.warn(
50
46
  "Pundit policy scope `resolve_admin` method is deprecated. " +
51
47
  "Please use a namespaced pundit policy instead.",
52
48
  )
@@ -33,10 +33,25 @@ and renders all form fields for a resource's editable attributes.
33
33
  </div>
34
34
  <% end %>
35
35
 
36
- <% page.attributes(controller.action_name).each do |attribute| -%>
37
- <div class="field-unit field-unit--<%= attribute.html_class %> field-unit--<%= requireness(attribute) %>">
38
- <%= render_field attribute, f: f %>
39
- </div>
36
+ <% page.attributes(controller.action_name).each do |title, attributes| -%>
37
+ <fieldset class="<%= "field-unit--nested" if title.present? %>">
38
+ <% if title.present? %>
39
+ <legend><%= t "helpers.label.#{f.object_name}.#{title}", default: title %></legend>
40
+ <% end %>
41
+
42
+ <% attributes.each do |attribute| %>
43
+ <div class="field-unit field-unit--<%= attribute.html_class %> field-unit--<%= requireness(attribute) %>">
44
+ <%= render_field attribute, f: f %>
45
+
46
+ <% hint_key = "administrate.field_hints.#{page.resource_name}.#{attribute.name}" %>
47
+ <% if I18n.exists?(hint_key) -%>
48
+ <div class="field-unit__hint">
49
+ <%= I18n.t(hint_key) %>
50
+ </div>
51
+ <% end -%>
52
+ </div>
53
+ <% end %>
54
+ </fieldset>
40
55
  <% end -%>
41
56
 
42
57
  <div class="form-actions">
@@ -42,16 +42,24 @@ as well as a link to its edit page.
42
42
 
43
43
  <section class="main-content__body">
44
44
  <dl>
45
- <% page.attributes.each do |attribute| %>
46
- <dt class="attribute-label" id="<%= attribute.name %>">
47
- <%= t(
48
- "helpers.label.#{resource_name}.#{attribute.name}",
49
- default: page.resource.class.human_attribute_name(attribute.name),
50
- ) %>
51
- </dt>
52
-
53
- <dd class="attribute-data attribute-data--<%=attribute.html_class%>"
54
- ><%= render_field attribute, page: page %></dd>
45
+ <% page.attributes.each do |title, attributes| %>
46
+ <fieldset class="<%= "field-unit--nested" if title.present? %>">
47
+ <% if title.present? %>
48
+ <legend><%= t "helpers.label.#{page.resource_name}.#{title}", default: title %></legend>
49
+ <% end %>
50
+
51
+ <% attributes.each do |attribute| %>
52
+ <dt class="attribute-label" id="<%= attribute.name %>">
53
+ <%= t(
54
+ "helpers.label.#{resource_name}.#{attribute.name}",
55
+ default: page.resource.class.human_attribute_name(attribute.name),
56
+ ) %>
57
+ </dt>
58
+
59
+ <dd class="attribute-data attribute-data--<%=attribute.html_class%>"
60
+ ><%= render_field attribute, page: page %></dd>
61
+ <% end %>
62
+ </fieldset>
55
63
  <% end %>
56
64
  </dl>
57
65
  </section>
@@ -19,10 +19,20 @@ The form will be rendered as nested_from to parent relationship.
19
19
  <%= f.fields_for field.attribute, field.data || field.nested_form.resource.class.new do |has_one_f| %>
20
20
  <fieldset class="field-unit--nested">
21
21
  <legend><%= t "helpers.label.#{f.object_name}.#{field.name}", default: field.name.titleize %></legend>
22
- <% field.nested_form.attributes.each do |attribute| -%>
23
- <div class="field-unit field-unit--<%= attribute.html_class %>">
24
- <%= render_field attribute, f: has_one_f %>
25
- </div>
22
+ <% field.nested_form.attributes.each do |title, attributes| -%>
23
+
24
+ <fieldset class="<%= "field-unit--nested" if title.present? %>">
25
+ <% if title.present? %>
26
+ <legend><%= t "helpers.label.#{f.object_name}.#{title}", default: title %></legend>
27
+ <% end %>
28
+
29
+ <% attributes.each do |attribute| %>
30
+ <div class="field-unit field-unit--<%= attribute.html_class %>">
31
+ <%= render_field attribute, f: has_one_f %>
32
+ </div>
33
+ <% end %>
34
+ </fieldset>
35
+
26
36
  <% end -%>
27
37
  </fieldset>
28
38
  <% end %>
@@ -24,18 +24,24 @@ All show page attributes of has_one relationship would be rendered
24
24
  [namespace, field.data],
25
25
  ) %>
26
26
  </legend>
27
- <% field.nested_show.attributes.each do |attribute| -%>
28
- <div>
29
- <dt class="attribute-label">
30
- <%= t(
31
- "helpers.label.#{field.associated_class_name.underscore}.#{attribute.name}",
32
- default: attribute.name.titleize,
33
- ) %>
34
- </dt>
35
- <dd class="attribute-data attribute-data--<%= attribute.html_class %>">
36
- <%= render_field attribute, { page: page } %>
37
- </dd>
38
- </div>
27
+ <% field.nested_show.attributes.each do |title, attributes| -%>
28
+ <fieldset class="<%= "field-unit--nested" if title.present? %>">
29
+ <% if title.present? %>
30
+ <legend><%= t "helpers.label.#{namespace}.#{title}", default: title %></legend>
31
+ <% end %>
32
+
33
+ <% attributes.each do |attribute| %>
34
+ <dt class="attribute-label">
35
+ <%= t(
36
+ "helpers.label.#{field.associated_class_name.underscore}.#{attribute.name}",
37
+ default: attribute.name.titleize,
38
+ ) %>
39
+ </dt>
40
+ <dd class="attribute-data attribute-data--<%= attribute.html_class %>">
41
+ <%= render_field attribute, { page: page } %>
42
+ </dd>
43
+ <% end %>
44
+ </fieldset>
39
45
  <% end -%>
40
46
  </fieldset>
41
47
  <% end %>
@@ -93,3 +93,17 @@ To set custom redirects after the actions `create`, `update` and `destroy` you c
93
93
  [namespace, requested_resource.some_other_resource]
94
94
  end
95
95
  ```
96
+
97
+ ## Creating Records
98
+
99
+ You can perform actions after creation by passing a `block` to `super` in the
100
+ `create` method. The block will only be called if the resource is successfully
101
+ created.
102
+
103
+ ```ruby
104
+ def create
105
+ super do |resource|
106
+ # do something with the newly created resource
107
+ end
108
+ end
109
+ ```
@@ -113,6 +113,9 @@ association `belongs_to :country`, from your model.
113
113
 
114
114
  **Field::HasMany**
115
115
 
116
+ `:collection_attributes` - Set the columns to display in the show view.
117
+ Default is COLLECTION_ATTRIBUTES in dashboard.
118
+
116
119
  `:limit` - The number of resources (paginated) to display in the show view. To disable pagination,
117
120
  set this to `0` or `false`. Default is `5`.
118
121
 
@@ -168,8 +171,7 @@ more results than expected. Default is `false`.
168
171
  and works by by passing a hash that includes the formatter (`formatter`) and
169
172
  the options for the formatter (`formatter_options`). Defaults to the locale's
170
173
  delimiter when `formatter_options` does not include a `delimiter`. See the
171
- example below. Note that currently only
172
- `ActiveSupport::NumberHelper.number_to_delimited` is supported.
174
+ example below. All helpers from `ActiveSupport::NumberHelper` are supported.
173
175
 
174
176
  For example, you might use the following to display U.S. currency:
175
177
 
@@ -383,3 +385,54 @@ FORM_ATTRIBUTES_EDIT = [
383
385
  ```
384
386
 
385
387
  Or for custom action with constant name `"FORM_ATTRIBUTES_#{action.upcase}"`
388
+
389
+ ### Form Fields' Hints
390
+
391
+ You can show a brief text element below an input field by setting the
392
+ corresponding translation key using the path:
393
+
394
+ `administrate.field_hints.#{model_name}.#{field_name}`
395
+
396
+ For example, with a Customer dashboard with an email field you can add a
397
+ string value that will be used as text hint:
398
+
399
+ ```yml
400
+ en:
401
+ administrate:
402
+ field_hints:
403
+ customer:
404
+ email: field_hint
405
+ ```
406
+
407
+ ## Grouped Attributes
408
+
409
+ You may have models with a large number of fields and therefore you might want to group them in a meaningul way:
410
+
411
+ ```ruby
412
+ class UserDashboard < Administrate::BaseDashboard
413
+ SHOW_PAGE_ATTRIBUTES = {
414
+ "" => [:username],
415
+ "Personal Information" => [:first_name, :last_name, :email],
416
+ "Address" => [:address_line_one, :address_line_two, :address_city, :address_state, :address_country]
417
+ }
418
+
419
+ FORM_ATTRIBUTES = {
420
+ "" => [:username, :password, :password_confirmation],
421
+ "personal_information" => [:first_name, :last_name, :email],
422
+ "address" => [:address_line_one, :address_line_two, :address_city, :address_state, :address_country]
423
+ }
424
+ end
425
+ ```
426
+
427
+ You can optionally translate your group labels:
428
+
429
+ ```yaml
430
+ en:
431
+ helpers:
432
+ label:
433
+ user:
434
+ address: Address
435
+ personal_information: Personal Information
436
+ ```
437
+
438
+ If not defined (see `SHOW_PAGE_ATTRIBUTES` above), Administrate will default to the given strings.
@@ -10,7 +10,7 @@ In general, you can override any of the views under Administrate's
10
10
  [/app/views][1].
11
11
  For example, say that you want to customize the template used for flash
12
12
  messages. You can provide your own as
13
- `/app/views/administrate/application/_flashes.html.erb`, and it will replace
13
+ `app/views/admin/application/_flashes.html.erb`, and it will replace
14
14
  Administrate's own.
15
15
 
16
16
  Figuring out which views are available and where can be repetitive. You can
@@ -3,7 +3,7 @@ title: Getting Started
3
3
  ---
4
4
 
5
5
  Administrate is released as a Ruby gem, and can be installed on Rails
6
- applications version 6.0 or greater. We support Ruby 2.7 and up.
6
+ applications version 6.0 or greater. We support Ruby 3.0 and up.
7
7
 
8
8
  First, add the following to your Gemfile:
9
9
 
@@ -69,7 +69,13 @@ module Administrate
69
69
  end
70
70
 
71
71
  def permitted_attributes(action = nil)
72
- form_attributes(action).map do |attr|
72
+ attributes = form_attributes action
73
+
74
+ if attributes.is_a? Hash
75
+ attributes = attributes.values.flatten
76
+ end
77
+
78
+ attributes.map do |attr|
73
79
  attribute_types[attr].permitted_attribute(
74
80
  attr,
75
81
  resource_class: self.class.model,
@@ -83,7 +89,11 @@ module Administrate
83
89
  end
84
90
 
85
91
  def collection_attributes
86
- self.class::COLLECTION_ATTRIBUTES
92
+ if self.class::COLLECTION_ATTRIBUTES.is_a?(Hash)
93
+ self.class::COLLECTION_ATTRIBUTES.values.flatten
94
+ else
95
+ self.class::COLLECTION_ATTRIBUTES
96
+ end
87
97
  end
88
98
 
89
99
  def search_attributes
@@ -107,7 +117,12 @@ module Administrate
107
117
  end
108
118
 
109
119
  def item_associations
110
- attribute_associated(show_page_attributes)
120
+ attributes = if show_page_attributes.is_a?(Hash)
121
+ show_page_attributes.values.flatten
122
+ else
123
+ show_page_attributes
124
+ end
125
+ attribute_associated attributes
111
126
  end
112
127
 
113
128
  private
@@ -34,7 +34,7 @@ module Administrate
34
34
  end
35
35
 
36
36
  def searchable_field
37
- ActiveSupport::Deprecation.warn(
37
+ Administrate.deprecator.warn(
38
38
  "searchable_field is deprecated, use searchable_fields instead",
39
39
  )
40
40
  options.fetch(:searchable_field)
@@ -22,7 +22,11 @@ module Administrate
22
22
  end
23
23
 
24
24
  def associated_collection(order = self.order)
25
- Administrate::Page::Collection.new(associated_dashboard, order: order)
25
+ Administrate::Page::Collection.new(
26
+ associated_dashboard,
27
+ order: order,
28
+ collection_attributes: options[:collection_attributes],
29
+ )
26
30
  end
27
31
 
28
32
  def attribute_key
@@ -38,14 +38,8 @@ module Administrate
38
38
  formatter = options[:format][:formatter]
39
39
  formatter_options = options[:format][:formatter_options].to_h
40
40
 
41
- case formatter
42
- when :number_to_delimited
43
- ActiveSupport::NumberHelper.number_to_delimited(
44
- result, **formatter_options
45
- )
46
- else
47
- result
48
- end
41
+ ActiveSupport::NumberHelper.
42
+ try(formatter, result, **formatter_options) || result
49
43
  end
50
44
  end
51
45
  end
@@ -10,9 +10,9 @@ module Administrate
10
10
  return order_by_association(relation) unless
11
11
  reflect_association(relation).nil?
12
12
 
13
- order = "#{relation.table_name}.#{attribute} #{direction}"
13
+ order = relation.arel_table[attribute].public_send(direction)
14
14
 
15
- return relation.reorder(Arel.sql(order)) if
15
+ return relation.reorder(order) if
16
16
  column_exist?(relation, attribute)
17
17
 
18
18
  relation
@@ -66,11 +66,11 @@ module Administrate
66
66
 
67
67
  def order_by_count(relation)
68
68
  klass = reflect_association(relation).klass
69
- query = "COUNT(#{klass.table_name}.#{klass.primary_key}) #{direction}"
69
+ query = klass.arel_table[klass.primary_key].count.public_send(direction)
70
70
  relation.
71
71
  left_joins(attribute.to_sym).
72
72
  group(:id).
73
- reorder(Arel.sql(query))
73
+ reorder(query)
74
74
  end
75
75
 
76
76
  def order_by_belongs_to(relation)
@@ -92,15 +92,15 @@ module Administrate
92
92
  def order_by_attribute(relation)
93
93
  relation.joins(
94
94
  attribute.to_sym,
95
- ).reorder(Arel.sql(order_by_attribute_query))
95
+ ).reorder(order_by_attribute_query)
96
96
  end
97
97
 
98
98
  def order_by_id(relation)
99
- relation.reorder(Arel.sql(order_by_id_query(relation)))
99
+ relation.reorder(order_by_id_query(relation))
100
100
  end
101
101
 
102
102
  def order_by_association_id(relation)
103
- relation.reorder(Arel.sql(order_by_association_id_query))
103
+ relation.reorder(order_by_association_id_query)
104
104
  end
105
105
 
106
106
  def ordering_by_association_column?(relation)
@@ -115,15 +115,16 @@ module Administrate
115
115
  end
116
116
 
117
117
  def order_by_id_query(relation)
118
- "#{relation.table_name}.#{foreign_key(relation)} #{direction}"
118
+ relation.arel_table[foreign_key(relation)].public_send(direction)
119
119
  end
120
120
 
121
121
  def order_by_association_id_query
122
- "#{association_table_name}.id #{direction}"
122
+ Arel::Table.new(association_table_name)[:id].public_send(direction)
123
123
  end
124
124
 
125
125
  def order_by_attribute_query
126
- "#{association_table_name}.#{association_attribute} #{direction}"
126
+ table = Arel::Table.new(association_table_name)
127
+ table[association_attribute].public_send(direction)
127
128
  end
128
129
 
129
130
  def relation_type(relation)
@@ -4,6 +4,7 @@ module Administrate
4
4
  module Page
5
5
  class Collection < Page::Base
6
6
  def attribute_names
7
+ options.fetch(:collection_attributes, nil) ||
7
8
  dashboard.collection_attributes
8
9
  end
9
10
 
@@ -11,8 +11,16 @@ module Administrate
11
11
  attr_reader :resource
12
12
 
13
13
  def attributes(action = nil)
14
- dashboard.form_attributes(action).map do |attribute|
15
- attribute_field(dashboard, resource, attribute, :form)
14
+ attributes = dashboard.form_attributes(action)
15
+
16
+ if attributes.is_a? Array
17
+ attributes = { "" => attributes }
18
+ end
19
+
20
+ attributes.transform_values do |attrs|
21
+ attrs.map do |attribute|
22
+ attribute_field(dashboard, resource, attribute, :form)
23
+ end
16
24
  end
17
25
  end
18
26
 
@@ -15,8 +15,16 @@ module Administrate
15
15
  end
16
16
 
17
17
  def attributes
18
- dashboard.show_page_attributes.map do |attr_name|
19
- attribute_field(dashboard, resource, attr_name, :show)
18
+ attributes = dashboard.show_page_attributes
19
+
20
+ if attributes.is_a? Array
21
+ attributes = { "" => attributes }
22
+ end
23
+
24
+ attributes.transform_values do |attrs|
25
+ attrs.map do |attr_name|
26
+ attribute_field(dashboard, resource, attr_name, :show)
27
+ end
20
28
  end
21
29
  end
22
30
  end
@@ -1,3 +1,3 @@
1
1
  module Administrate
2
- VERSION = "0.19.0".freeze
2
+ VERSION = "0.20.1".freeze
3
3
  end
data/lib/administrate.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  require "administrate/engine"
2
+ require "administrate/version"
2
3
 
3
4
  module Administrate
4
5
  def self.warn_of_missing_resource_class
5
- ActiveSupport::Deprecation.warn(
6
+ deprecator.warn(
6
7
  "Calling Field::Base.permitted_attribute without the option " +
7
8
  ":resource_class is deprecated. If you are seeing this " +
8
9
  "message, you are probably using a custom field type that" +
@@ -12,7 +13,7 @@ module Administrate
12
13
  end
13
14
 
14
15
  def self.warn_of_deprecated_option(name)
15
- ActiveSupport::Deprecation.warn(
16
+ deprecator.warn(
16
17
  "The option :#{name} is deprecated. " +
17
18
  "Administrate should detect it automatically. " +
18
19
  "Please file an issue at " +
@@ -22,7 +23,7 @@ module Administrate
22
23
  end
23
24
 
24
25
  def self.warn_of_deprecated_method(klass, method)
25
- ActiveSupport::Deprecation.warn(
26
+ deprecator.warn(
26
27
  "The method #{klass}##{method} is deprecated. " +
27
28
  "If you are seeing this message you are probably " +
28
29
  "using a dashboard that depends explicitly on it. " +
@@ -32,10 +33,14 @@ module Administrate
32
33
  end
33
34
 
34
35
  def self.warn_of_deprecated_authorization_method(method)
35
- ActiveSupport::Deprecation.warn(
36
+ deprecator.warn(
36
37
  "The method `#{method}` is deprecated. " +
37
38
  "Please use `accessible_action?` instead, " +
38
39
  "or see the documentation for other options.",
39
40
  )
40
41
  end
42
+
43
+ def self.deprecator
44
+ @deprecator ||= ActiveSupport::Deprecation.new(VERSION, "Administrate")
45
+ end
41
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: administrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.20.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Charlton
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-07-18 00:00:00.000000000 Z
12
+ date: 2024-01-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -17,70 +17,88 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '5.0'
20
+ version: '6.0'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '8.0'
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
28
  - - ">="
26
29
  - !ruby/object:Gem::Version
27
- version: '5.0'
30
+ version: '6.0'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '8.0'
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: actionview
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
38
  - - ">="
33
39
  - !ruby/object:Gem::Version
34
- version: '5.0'
40
+ version: '6.0'
41
+ - - "<"
42
+ - !ruby/object:Gem::Version
43
+ version: '8.0'
35
44
  type: :runtime
36
45
  prerelease: false
37
46
  version_requirements: !ruby/object:Gem::Requirement
38
47
  requirements:
39
48
  - - ">="
40
49
  - !ruby/object:Gem::Version
41
- version: '5.0'
50
+ version: '6.0'
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: '8.0'
42
54
  - !ruby/object:Gem::Dependency
43
55
  name: activerecord
44
56
  requirement: !ruby/object:Gem::Requirement
45
57
  requirements:
46
58
  - - ">="
47
59
  - !ruby/object:Gem::Version
48
- version: '5.0'
60
+ version: '6.0'
61
+ - - "<"
62
+ - !ruby/object:Gem::Version
63
+ version: '8.0'
49
64
  type: :runtime
50
65
  prerelease: false
51
66
  version_requirements: !ruby/object:Gem::Requirement
52
67
  requirements:
53
68
  - - ">="
54
69
  - !ruby/object:Gem::Version
55
- version: '5.0'
70
+ version: '6.0'
71
+ - - "<"
72
+ - !ruby/object:Gem::Version
73
+ version: '8.0'
56
74
  - !ruby/object:Gem::Dependency
57
75
  name: jquery-rails
58
76
  requirement: !ruby/object:Gem::Requirement
59
77
  requirements:
60
- - - ">="
78
+ - - "~>"
61
79
  - !ruby/object:Gem::Version
62
- version: '4.0'
80
+ version: 4.6.0
63
81
  type: :runtime
64
82
  prerelease: false
65
83
  version_requirements: !ruby/object:Gem::Requirement
66
84
  requirements:
67
- - - ">="
85
+ - - "~>"
68
86
  - !ruby/object:Gem::Version
69
- version: '4.0'
87
+ version: 4.6.0
70
88
  - !ruby/object:Gem::Dependency
71
89
  name: kaminari
72
90
  requirement: !ruby/object:Gem::Requirement
73
91
  requirements:
74
- - - ">="
92
+ - - "~>"
75
93
  - !ruby/object:Gem::Version
76
- version: '1.0'
94
+ version: 1.2.2
77
95
  type: :runtime
78
96
  prerelease: false
79
97
  version_requirements: !ruby/object:Gem::Requirement
80
98
  requirements:
81
- - - ">="
99
+ - - "~>"
82
100
  - !ruby/object:Gem::Version
83
- version: '1.0'
101
+ version: 1.2.2
84
102
  - !ruby/object:Gem::Dependency
85
103
  name: sassc-rails
86
104
  requirement: !ruby/object:Gem::Requirement
@@ -345,7 +363,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
345
363
  - !ruby/object:Gem::Version
346
364
  version: '0'
347
365
  requirements: []
348
- rubygems_version: 3.4.14
366
+ rubygems_version: 3.4.20
349
367
  signing_key:
350
368
  specification_version: 4
351
369
  summary: A Rails engine for creating super-flexible admin dashboards