dry_admin 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2473e7b7b2dd97a88fd22f60256f5f4635fdbbb9
4
+ data.tar.gz: 7bb4bc5c7fdc8e61e2009fe548ad6b8b8131897b
5
+ SHA512:
6
+ metadata.gz: da842f9cbaffc3fc9a9f0139aa72b74238735ec55920bb8247ecb9730abfacf60ffa624b0d8a0e20b837a895ceea75fb599b7d7f2a5ba7cd944490b6aa3e085c
7
+ data.tar.gz: 20103214c551eaf99c8abd736fcd4379302cae4ae38e4e963e8a450bc790838508a3d0b60fdc57295caf3f9833482bf46c6f02b0d96da14a7d11b2798f929d9d
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2017
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # DRYAdmin
2
+ I hate creating admin areas from scratch in every Rails app I make. Thus, one sunny afternoon I've sat down and created DRYAdmin - mountable admin engine that "just works" with whatever models you have.*
3
+
4
+ <sup>(*hopefully)</sup>
5
+
6
+ Don't Repeat Yourself - ever again.
7
+
8
+ **DISCLAIMER:** IT'S VERSION 0.1., WHICH MEANS THAT IT PROBABLY SHOULDN'T BE USED IN PRODUCTION ENVIRONMENT YET.
9
+
10
+ Ok, you have been warned.
11
+
12
+ ## Installation
13
+ Add this line to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem 'dry_admin', group: :development
17
+ ```
18
+
19
+ And then execute:
20
+ ```bash
21
+ $ bundle
22
+ ```
23
+
24
+ Or install it yourself as:
25
+ ```bash
26
+ $ gem install dry_admin
27
+ ```
28
+ ## Dependencies
29
+ DRYAdmin has currently three dependencies (apart from Rails itself). Bootstrap to make it look nice, Will Paginate to make Pagination work easily.
30
+
31
+ ```ruby
32
+ "bootstrap-sass", "~> 3.3.6"
33
+ "will_paginate", "~> 3.1.0"
34
+ "will_paginate-bootstrap"
35
+ ```
36
+
37
+ ## Usage
38
+ Usage is dead simple. Just drop this line into your config/routes.rb file and that's it.
39
+ ```ruby
40
+ mount DryAdmin::Engine => '/admin'
41
+ ```
42
+ You can change mounting point to anything you like of course.
43
+ If you are using this gem and like it, get in touch with me - [@HlavacekMichal](https://twitter.com/hlavacekmichal).
44
+ And if you feel very generous and want to support further development, you can <a href='https://ko-fi.com/A0482223' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
45
+
46
+ ## Contributing
47
+ If you want to add, customize, remove, change or polish anything, please open an issue and we can discuss that, and I'll most likely fix that until version 0.2.
48
+ For those who will be reading the source code, I apologize in advance. I made this in one sunny afternoon, and haven't find a time to properly refactor and beautify the code yet.
49
+
50
+ ## License
51
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,37 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'DryAdmin'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+
21
+ load 'rails/tasks/statistics.rake'
22
+
23
+
24
+
25
+ require 'bundler/gem_tasks'
26
+
27
+ require 'rake/testtask'
28
+
29
+ Rake::TestTask.new(:test) do |t|
30
+ t.libs << 'lib'
31
+ t.libs << 'test'
32
+ t.pattern = 'test/**/*_test.rb'
33
+ t.verbose = false
34
+ end
35
+
36
+
37
+ task default: :test
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/dry_admin .js
2
+ //= link_directory ../stylesheets/dry_admin .css
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require_tree .
@@ -0,0 +1,5 @@
1
+ @import 'bootstrap-sprockets'
2
+ @import 'bootstrap'
3
+
4
+ .margin-top-0
5
+ margin-top: 0
@@ -0,0 +1,11 @@
1
+ module DryAdmin
2
+ class ApplicationController < ActionController::Base
3
+ protect_from_forgery with: :exception
4
+ before_action :menu
5
+
6
+ def menu
7
+ Rails.application.eager_load!
8
+ @models = ActiveRecord::Base.descendants.reject {|m| m.name == "ApplicationRecord" or m.name == "ActiveRecord::SchemaMigration"}
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ require_dependency "dry_admin/application_controller"
2
+
3
+ module DryAdmin
4
+ class DashboardsController < ApplicationController
5
+ def index
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,74 @@
1
+ require_dependency "dry_admin/application_controller"
2
+
3
+ module DryAdmin
4
+ class ResourcesController < ApplicationController
5
+ before_action :set_model
6
+ before_action :attribute_types, :only => [:new, :edit]
7
+ def index
8
+ # CONDITIONALLY SELECT ONLY RECORDS FROM 1:N RELATION
9
+ where = {}
10
+ @belongs_to = @model.reflect_on_all_associations(:belongs_to).map(&:name)
11
+ @belongs_to.each do |association|
12
+ association_column = (association.to_s+"_id").to_sym
13
+ where[association_column] = params[association_column] if params[association_column].present?
14
+ end
15
+ @records = @model.where(where).paginate(:page => params[:page], :per_page => 15)
16
+ @submodels = @model.reflect_on_all_associations(:has_many)
17
+ end
18
+
19
+ def new
20
+ @record = @model.new
21
+ end
22
+
23
+ def create
24
+ @record = @model.new(resource_params)
25
+ if @record.save
26
+ redirect_to({action: 'index'}, notice: "#{@model.name} successfully saved")
27
+ else
28
+ render 'new'
29
+ end
30
+ end
31
+
32
+ def show
33
+ @record = @model.find(params[:id])
34
+ end
35
+
36
+ def edit
37
+ @record = @model.find(params[:id])
38
+ end
39
+
40
+ def update
41
+ @record = @model.find(params[:id])
42
+ if @record.update(resource_params)
43
+ redirect_to({action: 'index'}, notice: "#{@model.name} successfully updated")
44
+ else
45
+ render 'edit'
46
+ end
47
+ end
48
+
49
+ def destroy
50
+ @record = @model.find(params[:id])
51
+ if @record.destroy
52
+ redirect_to({action: 'index'}, notice: "#{@model.name} successfully destroyed")
53
+ else
54
+ redirect_to({action: 'index'}, alert: "#{@model.name} hasn't been destroyed")
55
+ end
56
+ end
57
+
58
+ private
59
+
60
+ def set_model
61
+ @model = Object.const_get params[:model].singularize.split("_").map(&:capitalize).join("")
62
+ end
63
+
64
+ def attribute_types
65
+ @types = @model.columns_hash.map {|k,v| {k => v.type}}.reduce({}, :merge)
66
+ end
67
+
68
+ private
69
+
70
+ def resource_params
71
+ params.require(@model.name.downcase).permit(@model.attribute_names)
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,4 @@
1
+ module DryAdmin
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module DryAdmin
2
+ module DashboardsHelper
3
+ end
4
+ end
@@ -0,0 +1,14 @@
1
+ module DryAdmin
2
+ module ResourcesHelper
3
+ def input_field(f, name, type)
4
+ fields = {:string => 'text_field', :text => 'text_area', :integer => 'number_field', :float => 'number_field', :decimal => 'number_field', :datetime => 'datetime_field',
5
+ :timestamp => 'datetime_field', :time => 'time_field', :date => 'date_field', :binary => 'text_area', :boolean => 'check_box'}
6
+ # CHECKBOX EXCEPTION
7
+ if type == :boolean
8
+ f.send(fields[type], name)
9
+ else
10
+ f.send(fields[type], name, :class=>"form-control", :placeholder => name.upcase.gsub("_"," "))
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,4 @@
1
+ module DryAdmin
2
+ class ApplicationJob < ActiveJob::Base
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ module DryAdmin
2
+ class ApplicationMailer < ActionMailer::Base
3
+ default from: 'from@example.com'
4
+ layout 'mailer'
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ module DryAdmin
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+ end
5
+ end
File without changes
@@ -0,0 +1,20 @@
1
+ <%= form_for @record, url: {:controller => 'resources', :action => @record.persisted? ? 'update' : 'create'}, :html => {:class=>"form-horizontal"} do |f| %>
2
+ <div class="form-group">
3
+ <div class="col-sm-offset-2 col-sm-10">
4
+ <%= link_to "&larr; Back to #{@model.name.pluralize(2)} list".html_safe, {:action => 'index'}, :class=>"btn btn-default" %>
5
+ </div>
6
+ </div>
7
+ <% @record.attributes.each do |k,v| %>
8
+ <div class="form-group">
9
+ <%= f.label :k, k.upcase.gsub("_", " "), :class=>"col-sm-2 control-label" %>
10
+ <div class="col-sm-10">
11
+ <%= input_field(f, k, @model.columns_hash[k].type) %>
12
+ </div>
13
+ </div>
14
+ <% end %>
15
+ <div class="form-group">
16
+ <div class="col-sm-offset-2 col-sm-10">
17
+ <%= f.submit :class=>"btn btn-primary" %>
18
+ </div>
19
+ </div>
20
+ <% end %>
@@ -0,0 +1,2 @@
1
+ <h3 class="margin-top-0"><%= "Edit #{@model.name}" %></h3>
2
+ <%= render :partial => "form" %>
@@ -0,0 +1,55 @@
1
+ <%= link_to "New #{@model.name}", {action: 'new'}, :class=> 'btn btn-primary btn-xs pull-right' %>
2
+ <h3 class="margin-top-0"><%= @model.name.pluralize(2) %></h3>
3
+ <div class="table-responsive">
4
+ <table class="table table-hover table-bordered">
5
+ <thead>
6
+ <tr>
7
+ <% @model.column_names.each do |name| %>
8
+ <th>
9
+ <%= name.upcase.gsub("_"," ") %>
10
+ </th>
11
+ <% end %>
12
+ <% if @submodels.present? %>
13
+ <th>
14
+ 1:N MODELS
15
+ </th>
16
+ <% end %>
17
+ <th>
18
+ ACTIONS
19
+ </th>
20
+ </tr>
21
+ </thead>
22
+ <tbody>
23
+ <% @records.each do |record| %>
24
+ <tr>
25
+ <% record.attributes.each do |k,v| %>
26
+ <td>
27
+ <% if @belongs_to.include?(k.to_s.gsub("_id","").to_sym) %>
28
+ <%= link_to v, {model: @belongs_to, action: 'show', id: v}, :class=>"btn btn-default btn-xs" %>
29
+ <% else %>
30
+ <%= v %>
31
+ <% end %>
32
+ </td>
33
+ <% end %>
34
+ <% if @submodels.present? %>
35
+ <td>
36
+ <% @submodels.each do |sm| %>
37
+ <%= link_to({action: 'index', model: sm.name, ((@model.name.downcase)+"_id").to_sym => record.id}, class: 'btn btn-default btn-xs') do %>
38
+ <%= sm.name.to_s.gsub("_"," ").capitalize %> (<%= record.send(sm.name.to_s).count %>)
39
+ <% end %>
40
+ <% end %>
41
+ </td>
42
+ <% end %>
43
+ <td>
44
+ <%= link_to "Detail", {action: 'show', id: record.id}, :class=> 'btn btn-primary btn-xs' %>
45
+ <%= link_to "Edit", {action: 'edit', id: record.id}, :class=> 'btn btn-info btn-xs' %>
46
+ <%= link_to "Delete", {action: 'destroy', id: record.id}, :method => :delete, :class=> 'btn btn-danger btn-xs', :data => {:confirm => "Are you sure?"} %>
47
+ </td>
48
+ </tr>
49
+ <% end %>
50
+ </tbody>
51
+ </table>
52
+ </div>
53
+ <div class="text-center">
54
+ <%= will_paginate @records, renderer: BootstrapPagination::Rails %>
55
+ </div>
@@ -0,0 +1,2 @@
1
+ <h3 class="margin-top-0"><%= "New #{@model.name}" %></h3>
2
+ <%= render :partial => "form" %>
@@ -0,0 +1,11 @@
1
+ <h3 class="margin-top-0"><%= "#{@model.name} ##{@record.id}" %></h3>
2
+ <%= link_to "&larr; Back to #{@model.name.pluralize(2)} list".html_safe, {:action => 'index'}, :class=>"btn btn-default" %>
3
+ <%= link_to "Edit #{@model.name}", {:action => 'edit'}, :class=>"btn btn-info" %>
4
+ <%= link_to "Delete #{@model.name}", {action: 'destroy'}, :method => :delete, :class=> 'btn btn-danger', :data => {:confirm => "Are you sure?"} %>
5
+ <hr/>
6
+ <dl class="dl-horizontal">
7
+ <% @record.attributes.each do |name, value| %>
8
+ <dt><%= name.upcase.gsub("_", " ") %></dt>
9
+ <dd><%= value %></dd>
10
+ <% end %>
11
+ </dl>
@@ -0,0 +1,17 @@
1
+ <% if notice %>
2
+ <div class="alert alert-success alert-dismissible" role="alert">
3
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
4
+ <span aria-hidden="true">&times;</span>
5
+ </button>
6
+ <strong>Success!</strong> <%= notice %>
7
+ </div>
8
+ <% end %>
9
+
10
+ <% if alert %>
11
+ <div class="alert alert-danger alert-dismissible" role="alert">
12
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
13
+ <span aria-hidden="true">&times;</span>
14
+ </button>
15
+ <strong>Error!</strong> <%= alert %>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <div class="list-group">
2
+ <% @models.each do |m| %>
3
+ <%= link_to({controller: 'resources', action: 'index', model: m.name.pluralize(2).split(/(?=[A-Z])/).join("_").downcase}, :class => "list-group-item") do %>
4
+ <%= m.name.pluralize(2) %> <span class="badge"><%= m.count %></span>
5
+ <% end %>
6
+ <% end %>
7
+ </div>
@@ -0,0 +1,39 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= Rails.application.class.parent_name %> | DRYAdmin</title>
5
+ <%= stylesheet_link_tag "dry_admin/application", media: "all" %>
6
+ <%= javascript_include_tag "dry_admin/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+ <nav class="navbar navbar-default">
11
+ <div class="container-fluid">
12
+ <!-- Brand and toggle get grouped for better mobile display -->
13
+ <div class="navbar-header">
14
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
15
+ <span class="sr-only">Toggle navigation</span>
16
+ <span class="icon-bar"></span>
17
+ <span class="icon-bar"></span>
18
+ <span class="icon-bar"></span>
19
+ </button>
20
+ <a class="navbar-brand" href="#">
21
+ <%= Rails.application.class.parent_name %>
22
+ <small>DRYAdmin</small>
23
+ </a>
24
+ </div>
25
+ </div><!-- /.container-fluid -->
26
+ </nav>
27
+ <div class="container-fluid">
28
+ <div class="row">
29
+ <div class="col-xs-12 col-sm-3 col-md-2 col-lg-1">
30
+ <%= render :partial => 'dry_admin/shared/models' %>
31
+ </div>
32
+ <div class="col-xs-12 col-sm-9 col-md-10 col-lg-11">
33
+ <%= render :partial => 'dry_admin/shared/alerts' %>
34
+ <%= yield %>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </body>
39
+ </html>
data/config/routes.rb ADDED
@@ -0,0 +1,11 @@
1
+ DryAdmin::Engine.routes.draw do
2
+ root 'dashboards#index'
3
+ get ':model' => 'resources#index'
4
+ post ':model' => 'resources#create'
5
+ get ':model/new' => 'resources#new'
6
+ get ':model/:id/edit' => 'resources#edit'
7
+ get ':model/:id' => 'resources#show'
8
+ patch ':model/:id' => 'resources#update'
9
+ put ':model/:id' => 'resources#update'
10
+ delete ':model/:id' => 'resources#destroy'
11
+ end
@@ -0,0 +1,5 @@
1
+ module DryAdmin
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace DryAdmin
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module DryAdmin
2
+ VERSION = '0.1.0'
3
+ end
data/lib/dry_admin.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "dry_admin/engine"
2
+
3
+ module DryAdmin
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :dry_admin do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dry_admin
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Michal Hlavacek
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-06-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '4'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6'
33
+ - !ruby/object:Gem::Dependency
34
+ name: bootstrap-sass
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.3'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.3'
47
+ - !ruby/object:Gem::Dependency
48
+ name: will_paginate
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.1'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.1'
61
+ - !ruby/object:Gem::Dependency
62
+ name: will_paginate-bootstrap
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sqlite3
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ description: DRYAdmin is a mountable Ruby on Rails engine that will create an instant
90
+ backend for all your application models.
91
+ email:
92
+ - hello@michalhlavacek.com
93
+ executables: []
94
+ extensions: []
95
+ extra_rdoc_files: []
96
+ files:
97
+ - MIT-LICENSE
98
+ - README.md
99
+ - Rakefile
100
+ - app/assets/config/dry_admin_manifest.js
101
+ - app/assets/javascripts/dry_admin/application.js
102
+ - app/assets/stylesheets/dry_admin/application.sass
103
+ - app/controllers/dry_admin/application_controller.rb
104
+ - app/controllers/dry_admin/dashboards_controller.rb
105
+ - app/controllers/dry_admin/resources_controller.rb
106
+ - app/helpers/dry_admin/application_helper.rb
107
+ - app/helpers/dry_admin/dashboards_helper.rb
108
+ - app/helpers/dry_admin/resources_helper.rb
109
+ - app/jobs/dry_admin/application_job.rb
110
+ - app/mailers/dry_admin/application_mailer.rb
111
+ - app/models/dry_admin/application_record.rb
112
+ - app/views/dry_admin/dashboards/index.html.erb
113
+ - app/views/dry_admin/resources/_form.html.erb
114
+ - app/views/dry_admin/resources/edit.html.erb
115
+ - app/views/dry_admin/resources/index.html.erb
116
+ - app/views/dry_admin/resources/new.html.erb
117
+ - app/views/dry_admin/resources/show.html.erb
118
+ - app/views/dry_admin/shared/_alerts.html.erb
119
+ - app/views/dry_admin/shared/_models.html.erb
120
+ - app/views/layouts/dry_admin/application.html.erb
121
+ - config/routes.rb
122
+ - lib/dry_admin.rb
123
+ - lib/dry_admin/engine.rb
124
+ - lib/dry_admin/version.rb
125
+ - lib/tasks/dry_admin_tasks.rake
126
+ homepage: https://github.com/MichalHlavacek/dry_admin
127
+ licenses:
128
+ - MIT
129
+ metadata: {}
130
+ post_install_message:
131
+ rdoc_options: []
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ requirements: []
145
+ rubyforge_project:
146
+ rubygems_version: 2.6.7
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: DRYAdmin - Instant Admin Backend for all Ruby on Rails apps
150
+ test_files: []