activeadmin 2.5.0 → 2.8.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +120 -6
  3. data/CONTRIBUTING.md +11 -57
  4. data/README.md +2 -2
  5. data/app/assets/javascripts/active_admin/base.js +26 -18
  6. data/app/assets/stylesheets/active_admin/_header.scss +37 -3
  7. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  8. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +3 -0
  9. data/app/javascript/active_admin/base.js +9 -0
  10. data/app/javascript/active_admin/initializers/per-page.js +1 -1
  11. data/app/javascript/active_admin/lib/checkbox-toggler.js +3 -3
  12. data/app/javascript/active_admin/lib/dropdown-menu.js +1 -1
  13. data/app/javascript/active_admin/lib/modal-dialog.js +7 -7
  14. data/app/javascript/active_admin/lib/per-page.js +1 -1
  15. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +1 -1
  16. data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
  17. data/config/locales/ar.yml +6 -6
  18. data/config/locales/en-CA.yml +3 -3
  19. data/config/locales/en-GB.yml +3 -3
  20. data/config/locales/en.yml +3 -3
  21. data/config/locales/es-MX.yml +2 -1
  22. data/config/locales/es.yml +5 -5
  23. data/config/locales/fr.yml +4 -4
  24. data/config/locales/it.yml +18 -0
  25. data/config/locales/ja.yml +3 -3
  26. data/config/locales/lv.yml +2 -2
  27. data/config/locales/vi.yml +6 -5
  28. data/docs/0-installation.md +26 -2
  29. data/docs/11-decorators.md +16 -5
  30. data/docs/2-resource-customization.md +10 -1
  31. data/docs/3-index-pages.md +1 -1
  32. data/docs/9-batch-actions.md +2 -2
  33. data/docs/Gemfile +2 -2
  34. data/docs/Gemfile.lock +93 -84
  35. data/docs/_includes/top-menu.html +1 -1
  36. data/docs/documentation.md +1 -1
  37. data/docs/index.html +6 -6
  38. data/lib/active_admin.rb +60 -60
  39. data/lib/active_admin/application.rb +13 -13
  40. data/lib/active_admin/application_settings.rb +3 -3
  41. data/lib/active_admin/authorization_adapter.rb +3 -3
  42. data/lib/active_admin/base_controller.rb +4 -4
  43. data/lib/active_admin/base_controller/authorization.rb +13 -12
  44. data/lib/active_admin/batch_actions/controller.rb +3 -3
  45. data/lib/active_admin/batch_actions/resource_extension.rb +9 -8
  46. data/lib/active_admin/batch_actions/views/batch_action_form.rb +3 -3
  47. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +6 -6
  48. data/lib/active_admin/batch_actions/views/selection_cells.rb +3 -3
  49. data/lib/active_admin/cancan_adapter.rb +1 -1
  50. data/lib/active_admin/collection_decorator.rb +31 -0
  51. data/lib/active_admin/csv_builder.rb +11 -7
  52. data/lib/active_admin/dependency.rb +11 -11
  53. data/lib/active_admin/devise.rb +5 -5
  54. data/lib/active_admin/dsl.rb +1 -1
  55. data/lib/active_admin/dynamic_settings_node.rb +2 -2
  56. data/lib/active_admin/engine.rb +3 -3
  57. data/lib/active_admin/filters.rb +7 -7
  58. data/lib/active_admin/filters/active.rb +1 -1
  59. data/lib/active_admin/filters/active_filter.rb +5 -4
  60. data/lib/active_admin/filters/active_sidebar.rb +5 -5
  61. data/lib/active_admin/filters/forms.rb +6 -6
  62. data/lib/active_admin/filters/formtastic_addons.rb +1 -6
  63. data/lib/active_admin/filters/resource_extension.rb +1 -1
  64. data/lib/active_admin/form_builder.rb +21 -19
  65. data/lib/active_admin/generators/boilerplate.rb +1 -1
  66. data/lib/active_admin/helpers/optional_display.rb +2 -2
  67. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  68. data/lib/active_admin/inputs/filters/base.rb +1 -1
  69. data/lib/active_admin/inputs/filters/base/search_method_select.rb +4 -4
  70. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
  71. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
  72. data/lib/active_admin/inputs/filters/date_range_input.rb +12 -9
  73. data/lib/active_admin/inputs/filters/select_input.rb +2 -2
  74. data/lib/active_admin/localizers.rb +1 -1
  75. data/lib/active_admin/localizers/resource_localizer.rb +3 -3
  76. data/lib/active_admin/menu.rb +6 -3
  77. data/lib/active_admin/menu_item.rb +7 -7
  78. data/lib/active_admin/namespace.rb +12 -12
  79. data/lib/active_admin/namespace_settings.rb +8 -5
  80. data/lib/active_admin/order_clause.rb +1 -1
  81. data/lib/active_admin/orm/active_record.rb +1 -1
  82. data/lib/active_admin/orm/active_record/comments.rb +19 -19
  83. data/lib/active_admin/orm/active_record/comments/comment.rb +3 -3
  84. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  85. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +19 -19
  86. data/lib/active_admin/page.rb +1 -1
  87. data/lib/active_admin/pundit_adapter.rb +5 -5
  88. data/lib/active_admin/resource.rb +17 -17
  89. data/lib/active_admin/resource/action_items.rb +5 -5
  90. data/lib/active_admin/resource/attributes.rb +1 -1
  91. data/lib/active_admin/resource/belongs_to.rb +2 -2
  92. data/lib/active_admin/resource/controllers.rb +1 -1
  93. data/lib/active_admin/resource/menu.rb +4 -4
  94. data/lib/active_admin/resource/naming.rb +5 -5
  95. data/lib/active_admin/resource/routes.rb +5 -5
  96. data/lib/active_admin/resource/scope_to.rb +7 -7
  97. data/lib/active_admin/resource/sidebars.rb +1 -1
  98. data/lib/active_admin/resource_controller.rb +12 -11
  99. data/lib/active_admin/resource_controller/data_access.rb +1 -1
  100. data/lib/active_admin/resource_controller/decorators.rb +6 -26
  101. data/lib/active_admin/resource_controller/streaming.rb +7 -6
  102. data/lib/active_admin/resource_dsl.rb +5 -5
  103. data/lib/active_admin/scope.rb +6 -6
  104. data/lib/active_admin/version.rb +1 -1
  105. data/lib/active_admin/view_factory.rb +17 -17
  106. data/lib/active_admin/view_helpers.rb +1 -1
  107. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +3 -3
  108. data/lib/active_admin/view_helpers/display_helper.rb +5 -5
  109. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -1
  110. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  111. data/lib/active_admin/views.rb +1 -1
  112. data/lib/active_admin/views/components/active_admin_form.rb +5 -5
  113. data/lib/active_admin/views/components/attributes_table.rb +5 -5
  114. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  115. data/lib/active_admin/views/components/dropdown_menu.rb +8 -8
  116. data/lib/active_admin/views/components/index_list.rb +3 -3
  117. data/lib/active_admin/views/components/menu.rb +1 -1
  118. data/lib/active_admin/views/components/menu_item.rb +4 -4
  119. data/lib/active_admin/views/components/paginated_collection.rb +18 -18
  120. data/lib/active_admin/views/components/panel.rb +1 -1
  121. data/lib/active_admin/views/components/scopes.rb +7 -5
  122. data/lib/active_admin/views/components/site_title.rb +1 -1
  123. data/lib/active_admin/views/components/status_tag.rb +11 -11
  124. data/lib/active_admin/views/components/table_for.rb +17 -17
  125. data/lib/active_admin/views/components/tabs.rb +3 -3
  126. data/lib/active_admin/views/footer.rb +2 -1
  127. data/lib/active_admin/views/header.rb +2 -2
  128. data/lib/active_admin/views/index_as_blog.rb +1 -1
  129. data/lib/active_admin/views/index_as_grid.rb +1 -1
  130. data/lib/active_admin/views/index_as_table.rb +16 -16
  131. data/lib/active_admin/views/pages/base.rb +14 -10
  132. data/lib/active_admin/views/pages/index.rb +14 -13
  133. data/lib/active_admin/views/tabbed_navigation.rb +2 -2
  134. data/lib/active_admin/views/title_bar.rb +1 -1
  135. data/lib/activeadmin.rb +1 -1
  136. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  137. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  138. data/lib/generators/active_admin/devise/devise_generator.rb +5 -5
  139. data/lib/generators/active_admin/install/install_generator.rb +14 -8
  140. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +9 -2
  141. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  142. data/lib/generators/active_admin/resource/resource_generator.rb +3 -3
  143. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  144. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  145. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  146. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  147. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  148. data/lib/ransack_ext.rb +8 -8
  149. metadata +20 -8
@@ -7,13 +7,13 @@ module ActiveAdmin
7
7
  desc "Creates an admin user and uses Devise for authentication"
8
8
  argument :name, type: :string, default: "AdminUser"
9
9
 
10
- class_option :registerable, type: :boolean, default: false,
11
- desc: "Should the generated resource be registerable?"
10
+ class_option :registerable, type: :boolean, default: false,
11
+ desc: "Should the generated resource be registerable?"
12
12
 
13
13
  RESERVED_NAMES = [:active_admin_user]
14
14
 
15
- class_option :default_user, type: :boolean, default: true,
16
- desc: "Should a default user be created inside the migration?"
15
+ class_option :default_user, type: :boolean, default: true,
16
+ desc: "Should a default user be created inside the migration?"
17
17
 
18
18
  def install_devise
19
19
  begin
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
  raise ActiveAdmin::GeneratorError, "#{e.message} If you don't want to use devise, run the generator with --skip-users."
23
23
  end
24
24
 
25
- require 'devise'
25
+ require "devise"
26
26
 
27
27
  initializer_file =
28
28
  File.join(destination_root, "config", "initializers", "devise.rb")
@@ -1,4 +1,4 @@
1
- require 'rails/generators/active_record'
1
+ require "rails/generators/active_record"
2
2
 
3
3
  module ActiveAdmin
4
4
  module Generators
@@ -8,22 +8,24 @@ module ActiveAdmin
8
8
 
9
9
  hook_for :users, default: "devise", desc: "Admin user generator to run. Skip with --skip-users"
10
10
  class_option :skip_comments, type: :boolean, default: false, desc: "Skip installation of comments"
11
+ class_option :use_webpacker, type: :boolean, default: false, desc: "Use Webpacker assets instead of Sprockets"
11
12
 
12
- source_root File.expand_path('templates', __dir__)
13
+ source_root File.expand_path("templates", __dir__)
13
14
 
14
15
  def copy_initializer
15
- @underscored_user_name = name.underscore.gsub('/', '_')
16
+ @underscored_user_name = name.underscore.gsub("/", "_")
16
17
  @use_authentication_method = options[:users].present?
17
18
  @skip_comments = options[:skip_comments]
18
- template 'active_admin.rb.erb', 'config/initializers/active_admin.rb'
19
+ @use_webpacker = options[:use_webpacker]
20
+ template "active_admin.rb.erb", "config/initializers/active_admin.rb"
19
21
  end
20
22
 
21
23
  def setup_directory
22
24
  empty_directory "app/admin"
23
- template 'dashboard.rb', 'app/admin/dashboard.rb'
25
+ template "dashboard.rb", "app/admin/dashboard.rb"
24
26
  if options[:users].present?
25
27
  @user_class = name
26
- template 'admin_users.rb.erb', "app/admin/#{name.underscore.pluralize}.rb"
28
+ template "admin_users.rb.erb", "app/admin/#{name.underscore.pluralize}.rb"
27
29
  end
28
30
  end
29
31
 
@@ -36,12 +38,16 @@ module ActiveAdmin
36
38
  end
37
39
 
38
40
  def create_assets
39
- generate "active_admin:assets"
41
+ if options[:use_webpacker]
42
+ generate "active_admin:webpacker"
43
+ else
44
+ generate "active_admin:assets"
45
+ end
40
46
  end
41
47
 
42
48
  def create_migrations
43
49
  unless options[:skip_comments]
44
- migration_template 'migrations/create_active_admin_comments.rb.erb', 'db/migrate/create_active_admin_comments.rb'
50
+ migration_template "migrations/create_active_admin_comments.rb.erb", "db/migrate/create_active_admin_comments.rb"
45
51
  end
46
52
  end
47
53
  end
@@ -294,7 +294,7 @@ ActiveAdmin.setup do |config|
294
294
  # config.include_default_association_filters = true
295
295
 
296
296
  # config.maximum_association_filter_arity = 256 # default value of :unlimited will change to 256 in a future version
297
- # config.filter_columns_for_large_association, [
297
+ # config.filter_columns_for_large_association = [
298
298
  # :display_name,
299
299
  # :full_name,
300
300
  # :name,
@@ -303,7 +303,7 @@ ActiveAdmin.setup do |config|
303
303
  # :title,
304
304
  # :email,
305
305
  # ]
306
- # config.filter_method_for_large_association, '_starts_with'
306
+ # config.filter_method_for_large_association = '_starts_with'
307
307
 
308
308
  # == Head
309
309
  #
@@ -325,4 +325,11 @@ ActiveAdmin.setup do |config|
325
325
  # You can inherit it with own class and inject it for all resources
326
326
  #
327
327
  # config.order_clause = MyOrderClause
328
+
329
+ # == Webpacker
330
+ #
331
+ # By default, Active Admin uses Sprocket's asset pipeline.
332
+ # You can switch to using Webpacker here.
333
+ #
334
+ <% unless @use_webpacker %># <% end %>config.use_webpacker = true
328
335
  end
@@ -1,7 +1,7 @@
1
1
  module ActiveAdmin
2
2
  module Generators
3
3
  class PageGenerator < Rails::Generators::NamedBase
4
- source_root File.expand_path('templates', __dir__)
4
+ source_root File.expand_path("templates", __dir__)
5
5
 
6
6
  def generate_config_file
7
7
  template "page.rb", "app/admin/#{file_path.tr('/', '_')}.rb"
@@ -1,4 +1,4 @@
1
- require 'active_admin/generators/boilerplate'
1
+ require "active_admin/generators/boilerplate"
2
2
 
3
3
  module ActiveAdmin
4
4
  module Generators
@@ -6,9 +6,9 @@ module ActiveAdmin
6
6
  desc "Registers resources with Active Admin"
7
7
 
8
8
  class_option :include_boilerplate, type: :boolean, default: false,
9
- desc: "Generate boilerplate code for your resource."
9
+ desc: "Generate boilerplate code for your resource."
10
10
 
11
- source_root File.expand_path('templates', __dir__)
11
+ source_root File.expand_path("templates", __dir__)
12
12
 
13
13
  def generate_config_file
14
14
  @boilerplate = ActiveAdmin::Generators::Boilerplate.new(class_name)
@@ -0,0 +1,7 @@
1
+ const webpack = require('webpack')
2
+
3
+ module.exports = new webpack.ProvidePlugin({
4
+ "$":"jquery",
5
+ "jQuery":"jquery",
6
+ "window.jQuery":"jquery"
7
+ });
@@ -0,0 +1,5 @@
1
+ // Load Active Admin's styles into Webpacker,
2
+ // see `active_admin.scss` for customization.
3
+ import "../stylesheets/active_admin";
4
+
5
+ import "@activeadmin/activeadmin";
@@ -0,0 +1,17 @@
1
+ // Sass variable overrides must be declared before loading up Active Admin's styles.
2
+ //
3
+ // To view the variables that Active Admin provides, take a look at
4
+ // `app/assets/stylesheets/active_admin/mixins/_variables.scss` in the
5
+ // Active Admin source.
6
+ //
7
+ // For example, to change the sidebar width:
8
+ // $sidebar-width: 242px;
9
+
10
+ // Active Admin's got SASS!
11
+ @import "~@activeadmin/activeadmin/src/scss/mixins";
12
+ @import "~@activeadmin/activeadmin/src/scss/base";
13
+
14
+ // Overriding any non-variable Sass must be done after the fact.
15
+ // For example, to change the default status-tag color:
16
+ //
17
+ // .status_tag { background: #6090DB; }
@@ -0,0 +1,2 @@
1
+ /* Active Admin Print Stylesheet */
2
+ @import "~@activeadmin/activeadmin/src/scss/print";
@@ -0,0 +1,26 @@
1
+ module ActiveAdmin
2
+ module Generators
3
+ class WebpackerGenerator < Rails::Generators::Base
4
+
5
+ source_root File.expand_path("templates", __dir__)
6
+
7
+ def install_assets
8
+ template "active_admin.js", "app/javascript/packs/active_admin.js"
9
+ template "active_admin.scss", "app/javascript/stylesheets/active_admin.scss"
10
+ template "print.scss", "app/javascript/packs/active_admin/print.scss"
11
+
12
+ copy_file "#{__dir__}/plugins/jquery.js", Rails.root.join("config/webpack/plugins/jquery.js").to_s
13
+
14
+ insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
15
+ "const jquery = require('./plugins/jquery')\n",
16
+ after: /require\(('|")@rails\/webpacker\1\);?\n/
17
+
18
+ insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
19
+ "environment.plugins.prepend('jquery', jquery)\n",
20
+ before: "module.exports"
21
+
22
+ run "yarn add @activeadmin/activeadmin"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -2,19 +2,19 @@
2
2
  # identically to the versions given in Ransack.
3
3
  #
4
4
  Ransack.configure do |config|
5
- { 'contains' => 'cont', 'starts_with' => 'start', 'ends_with' => 'end' }.each do |old, current|
5
+ { "contains" => "cont", "starts_with" => "start", "ends_with" => "end" }.each do |old, current|
6
6
  config.add_predicate old, Ransack::Constants::DERIVED_PREDICATES.detect { |q, _| q == current }[1]
7
7
  end
8
8
 
9
- { 'equals' => 'eq', 'greater_than' => 'gt', 'less_than' => 'lt' }.each do |old, current|
9
+ { "equals" => "eq", "greater_than" => "gt", "less_than" => "lt" }.each do |old, current|
10
10
  config.add_predicate old, arel_predicate: current
11
11
  end
12
12
 
13
- config.add_predicate 'gteq_datetime',
14
- arel_predicate: 'gteq',
15
- formatter: ->(v) { v.beginning_of_day }
13
+ config.add_predicate "gteq_datetime",
14
+ arel_predicate: "gteq",
15
+ formatter: ->(v) { v.beginning_of_day }
16
16
 
17
- config.add_predicate 'lteq_datetime',
18
- arel_predicate: 'lt',
19
- formatter: ->(v) { v + 1.day }
17
+ config.add_predicate "lteq_datetime",
18
+ arel_predicate: "lt",
19
+ formatter: ->(v) { v + 1.day }
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Maresh
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2019-11-26 00:00:00.000000000 Z
18
+ date: 2020-09-28 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: arbre
@@ -41,16 +41,22 @@ dependencies:
41
41
  name: formtastic
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '3.1'
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '5.0'
47
50
  type: :runtime
48
51
  prerelease: false
49
52
  version_requirements: !ruby/object:Gem::Requirement
50
53
  requirements:
51
- - - "~>"
54
+ - - ">="
52
55
  - !ruby/object:Gem::Version
53
56
  version: '3.1'
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '5.0'
54
60
  - !ruby/object:Gem::Dependency
55
61
  name: formtastic_i18n
56
62
  requirement: !ruby/object:Gem::Requirement
@@ -102,7 +108,7 @@ dependencies:
102
108
  version: '1.0'
103
109
  - - ">="
104
110
  - !ruby/object:Gem::Version
105
- version: 1.0.1
111
+ version: 1.2.1
106
112
  type: :runtime
107
113
  prerelease: false
108
114
  version_requirements: !ruby/object:Gem::Requirement
@@ -112,7 +118,7 @@ dependencies:
112
118
  version: '1.0'
113
119
  - - ">="
114
120
  - !ruby/object:Gem::Version
115
- version: 1.0.1
121
+ version: 1.2.1
116
122
  - !ruby/object:Gem::Dependency
117
123
  name: railties
118
124
  requirement: !ruby/object:Gem::Requirement
@@ -394,6 +400,7 @@ files:
394
400
  - lib/active_admin/batch_actions/views/selection_cells.rb
395
401
  - lib/active_admin/callbacks.rb
396
402
  - lib/active_admin/cancan_adapter.rb
403
+ - lib/active_admin/collection_decorator.rb
397
404
  - lib/active_admin/component.rb
398
405
  - lib/active_admin/controller_action.rb
399
406
  - lib/active_admin/csv_builder.rb
@@ -551,6 +558,11 @@ files:
551
558
  - lib/generators/active_admin/page/templates/page.rb
552
559
  - lib/generators/active_admin/resource/resource_generator.rb
553
560
  - lib/generators/active_admin/resource/templates/admin.rb.erb
561
+ - lib/generators/active_admin/webpacker/plugins/jquery.js
562
+ - lib/generators/active_admin/webpacker/templates/active_admin.js
563
+ - lib/generators/active_admin/webpacker/templates/active_admin.scss
564
+ - lib/generators/active_admin/webpacker/templates/print.scss
565
+ - lib/generators/active_admin/webpacker/webpacker_generator.rb
554
566
  - lib/ransack_ext.rb
555
567
  - vendor/assets/javascripts/jquery-ui/data.js
556
568
  - vendor/assets/javascripts/jquery-ui/disable-selection.js
@@ -592,14 +604,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
592
604
  requirements:
593
605
  - - ">="
594
606
  - !ruby/object:Gem::Version
595
- version: '2.4'
607
+ version: '2.5'
596
608
  required_rubygems_version: !ruby/object:Gem::Requirement
597
609
  requirements:
598
610
  - - ">="
599
611
  - !ruby/object:Gem::Version
600
612
  version: '0'
601
613
  requirements: []
602
- rubygems_version: 3.0.6
614
+ rubygems_version: 3.2.0.rc.1
603
615
  signing_key:
604
616
  specification_version: 4
605
617
  summary: Active Admin is a Ruby on Rails plugin for generating administration style