rails-admin-scaffold 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -8
- data/lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb +32 -5
- data/lib/generators/admin/scaffold_controller/templates/controllers/jbuilder/controller.rb.erb +84 -0
- data/lib/generators/admin/scaffold_controller/templates/controllers/{controller.erb → railties/controller.rb.erb} +0 -0
- data/lib/generators/admin/scaffold_controller/templates/tests/test_unit/{functional_test.erb → functional_test.rb.erb} +0 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/{_form.html.erb → _form.html.erb.erb} +0 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/{edit.html.erb → edit.html.erb.erb} +0 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/{index.html.erb → index.html.erb.erb} +0 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/{new.html.erb → new.html.erb.erb} +0 -0
- data/lib/generators/admin/scaffold_controller/templates/views/erb/{show.html.erb → show.html.erb.erb} +0 -0
- data/lib/generators/admin/scaffold_controller/templates/views/haml/_form.html.haml.erb +15 -0
- data/lib/generators/admin/scaffold_controller/templates/views/haml/edit.html.haml.erb +7 -0
- data/lib/generators/admin/scaffold_controller/templates/views/haml/index.html.haml.erb +23 -0
- data/lib/generators/admin/scaffold_controller/templates/views/haml/new.html.haml.erb +5 -0
- data/lib/generators/admin/scaffold_controller/templates/views/haml/show.html.haml.erb +11 -0
- data/lib/generators/admin/scaffold_controller/templates/views/jbuilder/index.json.jbuilder.erb +4 -0
- data/lib/generators/admin/scaffold_controller/templates/views/jbuilder/show.json.jbuilder.erb +1 -0
- data/lib/rails-admin-scaffold/version.rb +1 -1
- data/test/lib/generators/admin/scaffold_controller_generator_test.rb +9 -1
- metadata +18 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a96266607b8ef504727c283ca1094422c7f6c8f4
|
4
|
+
data.tar.gz: 4bccc40dc64fd7b2d1e32ecd1b2994fad397ba0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b94c0bbb4e6f67110212755cd457293284e5634031b71dc188adfa053dc19e0d3ccf2c0dfccd0e179bccfe335c9dc504a7f6961106d53d06d267065d0e9be8fc
|
7
|
+
data.tar.gz: 87b2f9c8a3e22a3c301582678d270064d28596d60afd6a7cf5bcf9c73ca9742c9df5bb4fbfeee2aafb4efbd36acbc798b1f16ed70237304483c9cd9c2ce91ddc
|
data/README.md
CHANGED
@@ -1,17 +1,27 @@
|
|
1
|
-
rails-admin-scaffold
|
1
|
+
rails-admin-scaffold [![Build Status](https://travis-ci.org/dhampik/rails-admin-scaffold.png?branch=master)](https://travis-ci.org/dhampik/rails-admin-scaffold)
|
2
2
|
====================
|
3
3
|
|
4
|
-
Rails generator which allows to scaffold admin controllers, views with proper (non-namespaced) models, helpers, tests and routes
|
4
|
+
Rails 4 generator which allows to scaffold admin controllers, views with proper (non-namespaced) models, helpers, tests and routes
|
5
5
|
|
6
|
-
How to use
|
6
|
+
How to use
|
7
7
|
-----------
|
8
8
|
* Add ```gem 'rails-admin-scaffold', 'x.x.x'``` to your Gemfile
|
9
9
|
* Run ```bundle install```
|
10
10
|
* Create admin scaffold with e. g. ```bin/rails g admin:scaffold_controller Post title:string content:text published:boolean```
|
11
11
|
|
12
|
-
|
12
|
+
Supports
|
13
|
+
--------
|
14
|
+
* Rails 4 only
|
15
|
+
* Rails default generators (erb, test::unit)
|
16
|
+
* Haml (if haml is used for views generation)
|
17
|
+
* Jbuilder (if jbuilder is installed for the project)
|
18
|
+
|
19
|
+
Plans
|
13
20
|
------
|
14
|
-
* add haml suppurt
|
15
|
-
* add jbuilder support
|
16
|
-
* improve tests
|
17
|
-
* use travis for ci
|
21
|
+
* <del>add haml suppurt</del>
|
22
|
+
* <del>add jbuilder support</del>
|
23
|
+
* <del>improve tests</del>
|
24
|
+
* <del>use travis for ci</del>
|
25
|
+
* add minitest support
|
26
|
+
* add rspec support
|
27
|
+
* split controller_scaffold into several separate generators
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'rubygems/specification'
|
1
2
|
require 'rails/generators/named_base'
|
2
3
|
require 'rails/generators/resource_helpers'
|
3
4
|
|
@@ -8,6 +9,8 @@ module Admin
|
|
8
9
|
|
9
10
|
source_root File.expand_path('../templates', __FILE__)
|
10
11
|
|
12
|
+
class_option :template_engine, desc: 'Template engine to be invoked (erb or haml).'
|
13
|
+
|
11
14
|
check_class_collision suffix: "Controller"
|
12
15
|
|
13
16
|
check_class_collision suffix: "ControllerTest"
|
@@ -31,12 +34,17 @@ module Admin
|
|
31
34
|
end
|
32
35
|
|
33
36
|
def create_controller_files
|
34
|
-
|
37
|
+
# I think there should be a better way to detect if jbuilder is in use
|
38
|
+
# If you know it, please let me know
|
39
|
+
if Gem::Specification.find_all_by_name('jbuilder').length >= 1
|
40
|
+
template "controllers/jbuilder/controller.rb.erb", File.join('app/controllers', prefix, class_path, "#{controller_file_name}_controller.rb")
|
41
|
+
else
|
42
|
+
template "controllers/railties/controller.rb.erb", File.join('app/controllers', prefix, class_path, "#{controller_file_name}_controller.rb")
|
43
|
+
end
|
35
44
|
end
|
36
45
|
|
37
46
|
def create_test_files
|
38
|
-
template "tests/test_unit/functional_test.erb",
|
39
|
-
File.join("test/controllers", prefix, controller_class_path, "#{controller_file_name}_controller_test.rb")
|
47
|
+
template "tests/test_unit/functional_test.rb.erb", File.join("test/controllers", prefix, controller_class_path, "#{controller_file_name}_controller_test.rb")
|
40
48
|
end
|
41
49
|
|
42
50
|
hook_for :helper, in: :rails do |helper|
|
@@ -50,7 +58,14 @@ module Admin
|
|
50
58
|
def copy_view_files
|
51
59
|
available_views.each do |view|
|
52
60
|
filename = filename_with_extensions(view)
|
53
|
-
template "views/#{handler}/#{filename}", File.join("app/views", prefix, controller_file_path, filename)
|
61
|
+
template "views/#{handler}/#{filename}.erb", File.join("app/views", prefix, controller_file_path, filename)
|
62
|
+
end
|
63
|
+
|
64
|
+
# I think there should be a better way to detect if jbuilder is in use
|
65
|
+
if Gem::Specification.find_all_by_name('jbuilder').length >= 1
|
66
|
+
%w(index show).each do |view|
|
67
|
+
template "views/jbuilder/#{view}.json.jbuilder.erb", File.join("app/views", prefix, controller_file_path, "#{view}.json.jbuilder")
|
68
|
+
end
|
54
69
|
end
|
55
70
|
end
|
56
71
|
|
@@ -93,7 +108,7 @@ module Admin
|
|
93
108
|
end
|
94
109
|
|
95
110
|
def handler
|
96
|
-
:
|
111
|
+
options[:template_engine]
|
97
112
|
end
|
98
113
|
|
99
114
|
def filename_with_extensions(name)
|
@@ -136,6 +151,18 @@ module Admin
|
|
136
151
|
end.sort.join(', ')
|
137
152
|
end
|
138
153
|
|
154
|
+
def attributes_list_with_timestamps
|
155
|
+
attributes_list(attributes_names + %w(created_at updated_at))
|
156
|
+
end
|
157
|
+
|
158
|
+
def attributes_list(attributes = attributes_names)
|
159
|
+
if self.attributes.any? {|attr| attr.name == 'password' && attr.type == :digest}
|
160
|
+
attributes = attributes.reject {|name| %w(password password_confirmation).include? name}
|
161
|
+
end
|
162
|
+
|
163
|
+
attributes.map { |a| ":#{a}"} * ', '
|
164
|
+
end
|
165
|
+
|
139
166
|
end
|
140
167
|
end
|
141
168
|
end
|
data/lib/generators/admin/scaffold_controller/templates/controllers/jbuilder/controller.rb.erb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
<% if namespaced? -%>
|
2
|
+
require_dependency "<%= namespaced_file_path %>/application_controller"
|
3
|
+
|
4
|
+
<% end -%>
|
5
|
+
<% module_namespacing do -%>
|
6
|
+
class <%= prefixed_controller_class_name %>Controller < ApplicationController
|
7
|
+
before_action :set_<%= singular_table_name %>, only: [:show, :edit, :update, :destroy]
|
8
|
+
|
9
|
+
# GET <%= prefixed_route_url %>
|
10
|
+
# GET <%= prefixed_route_url %>.json
|
11
|
+
def index
|
12
|
+
@<%= plural_table_name %> = <%= orm_class.all(class_name) %>
|
13
|
+
end
|
14
|
+
|
15
|
+
# GET <%= prefixed_route_url %>/1
|
16
|
+
# GET <%= prefixed_route_url %>/1.json
|
17
|
+
def show
|
18
|
+
end
|
19
|
+
|
20
|
+
# GET <%= prefixed_route_url %>/new
|
21
|
+
def new
|
22
|
+
@<%= singular_table_name %> = <%= orm_class.build(class_name) %>
|
23
|
+
end
|
24
|
+
|
25
|
+
# GET <%= prefixed_route_url %>/1/edit
|
26
|
+
def edit
|
27
|
+
end
|
28
|
+
|
29
|
+
# POST <%= prefixed_route_url %>
|
30
|
+
# POST <%= prefixed_route_url %>.json
|
31
|
+
def create
|
32
|
+
@<%= singular_table_name %> = <%= orm_class.build(class_name, "#{singular_table_name}_params") %>
|
33
|
+
|
34
|
+
respond_to do |format|
|
35
|
+
if @<%= orm_instance.save %>
|
36
|
+
format.html { redirect_to <%= "[:#{prefix}, @#{singular_table_name}]" %>, notice: <%= "'#{human_name} was successfully created.'" %> }
|
37
|
+
format.json { render action: 'show', status: :created, location: <%= "@#{singular_table_name}" %> }
|
38
|
+
else
|
39
|
+
format.html { render action: 'new' }
|
40
|
+
format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# PATCH/PUT <%= prefixed_route_url %>/1
|
46
|
+
# PATCH/PUT <%= prefixed_route_url %>/1.json
|
47
|
+
def update
|
48
|
+
respond_to do |format|
|
49
|
+
if @<%= orm_instance.update("#{singular_table_name}_params") %>
|
50
|
+
format.html { redirect_to <%= "[:#{prefix}, @#{singular_table_name}]" %>, notice: <%= "'#{human_name} was successfully updated.'" %> }
|
51
|
+
format.json { head :no_content }
|
52
|
+
else
|
53
|
+
format.html { render action: 'edit' }
|
54
|
+
format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# DELETE <%= prefixed_route_url %>/1
|
60
|
+
# DELETE <%= prefixed_route_url %>/1.json
|
61
|
+
def destroy
|
62
|
+
@<%= orm_instance.destroy %>
|
63
|
+
respond_to do |format|
|
64
|
+
format.html { redirect_to <%= prefixed_index_helper %>_url, notice: <%= "'#{human_name} was successfully destroyed.'" %> }
|
65
|
+
format.json { head :no_content }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
# Use callbacks to share common setup or constraints between actions.
|
71
|
+
def set_<%= singular_table_name %>
|
72
|
+
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
|
73
|
+
end
|
74
|
+
|
75
|
+
# Never trust parameters from the scary internet, only allow the white list through.
|
76
|
+
def <%= "#{singular_table_name}_params" %>
|
77
|
+
<%- if attributes_names.empty? -%>
|
78
|
+
params[<%= ":#{singular_table_name}" %>]
|
79
|
+
<%- else -%>
|
80
|
+
params.require(<%= ":#{singular_table_name}" %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
|
81
|
+
<%- end -%>
|
82
|
+
end
|
83
|
+
end
|
84
|
+
<% end -%>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/generators/admin/scaffold_controller/templates/views/erb/{new.html.erb → new.html.erb.erb}
RENAMED
File without changes
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= form_for(<%= "[:#{prefix}, @#{singular_table_name}]" %>) do |f|
|
2
|
+
- if @<%= singular_table_name %>.errors.any?
|
3
|
+
#error_explanation
|
4
|
+
%h2= "#{pluralize(@<%= singular_table_name %>.errors.count, "error")} prohibited this <%= singular_table_name %> from being saved:"
|
5
|
+
%ul
|
6
|
+
- @<%= singular_table_name %>.errors.full_messages.each do |msg|
|
7
|
+
%li= msg
|
8
|
+
|
9
|
+
<% for attribute in attributes -%>
|
10
|
+
.field
|
11
|
+
= f.label :<%= attribute.name %>
|
12
|
+
= f.<%= attribute.field_type %> :<%= attribute.name %>
|
13
|
+
<% end -%>
|
14
|
+
.actions
|
15
|
+
= f.submit 'Save'
|
@@ -0,0 +1,23 @@
|
|
1
|
+
%h1 Listing <%= plural_table_name %>
|
2
|
+
|
3
|
+
%table
|
4
|
+
%tr
|
5
|
+
<% for attribute in attributes -%>
|
6
|
+
%th <%= attribute.human_name %>
|
7
|
+
<% end -%>
|
8
|
+
%th
|
9
|
+
%th
|
10
|
+
%th
|
11
|
+
|
12
|
+
- @<%= plural_table_name %>.each do |<%= singular_table_name %>|
|
13
|
+
%tr
|
14
|
+
<% for attribute in attributes -%>
|
15
|
+
%td= <%= singular_table_name %>.<%= attribute.name %>
|
16
|
+
<% end -%>
|
17
|
+
%td= link_to 'Show', <%= "[:#{prefix}, #{singular_table_name}]" %>
|
18
|
+
%td= link_to 'Edit', edit_<%= prefixed_plain_model_url %>_path(<%= singular_table_name %>)
|
19
|
+
%td= link_to 'Destroy', <%= "[:#{prefix}, #{singular_table_name}]" %>, :method => :delete, :data => { :confirm => 'Are you sure?' }
|
20
|
+
|
21
|
+
%br
|
22
|
+
|
23
|
+
= link_to 'New <%= human_name %>', new_<%= prefixed_plain_model_url %>_path
|
@@ -0,0 +1,11 @@
|
|
1
|
+
%p#notice= notice
|
2
|
+
|
3
|
+
<% for attribute in attributes -%>
|
4
|
+
%p
|
5
|
+
%b <%= attribute.human_name %>:
|
6
|
+
= @<%= singular_table_name %>.<%= attribute.name %>
|
7
|
+
<% end -%>
|
8
|
+
|
9
|
+
= link_to 'Edit', edit_<%= prefixed_plain_model_url %>_path(@<%= singular_table_name %>)
|
10
|
+
\|
|
11
|
+
= link_to 'Back', <%= prefixed_index_helper %>_path
|
@@ -0,0 +1 @@
|
|
1
|
+
json.extract! @<%= singular_table_name %>, <%= attributes_list_with_timestamps %>
|
@@ -65,7 +65,7 @@ class Admin::Generators::ScaffoldControllerGeneratorTest < Rails::Generators::Te
|
|
65
65
|
assert_file "test/helpers/admin/users_helper_test.rb", /class Admin::UsersHelperTest < ActionView::TestCase/
|
66
66
|
end
|
67
67
|
|
68
|
-
def
|
68
|
+
def test_erb_views_are_generated
|
69
69
|
run_generator
|
70
70
|
|
71
71
|
%w(index edit new show).each do |view|
|
@@ -73,6 +73,14 @@ class Admin::Generators::ScaffoldControllerGeneratorTest < Rails::Generators::Te
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
def test_haml_views_are_generated
|
77
|
+
run_generator ['user', '-e', 'haml']
|
78
|
+
|
79
|
+
%w(index edit new show).each do |view|
|
80
|
+
assert_file "app/views/admin/users/#{view}.html.haml"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
76
84
|
def test_functional_tests
|
77
85
|
run_generator ["User", "name:string", "age:integer", "organization:references{polymorphic}"]
|
78
86
|
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-admin-scaffold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kirill Kalachev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
@@ -30,26 +30,6 @@ dependencies:
|
|
30
30
|
- - <
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '4.1'
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: rails
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - '>='
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '3.1'
|
40
|
-
- - <
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '4.1'
|
43
|
-
type: :development
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - '>='
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '3.1'
|
50
|
-
- - <
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '4.1'
|
53
33
|
- !ruby/object:Gem::Dependency
|
54
34
|
name: bundler
|
55
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,13 +69,21 @@ files:
|
|
89
69
|
- LICENSE
|
90
70
|
- README.md
|
91
71
|
- lib/rails-admin-scaffold/version.rb
|
92
|
-
- lib/generators/admin/scaffold_controller/templates/tests/test_unit/functional_test.erb
|
93
|
-
- lib/generators/admin/scaffold_controller/templates/controllers/controller.erb
|
94
|
-
- lib/generators/admin/scaffold_controller/templates/
|
95
|
-
- lib/generators/admin/scaffold_controller/templates/views/
|
96
|
-
- lib/generators/admin/scaffold_controller/templates/views/
|
97
|
-
- lib/generators/admin/scaffold_controller/templates/views/
|
98
|
-
- lib/generators/admin/scaffold_controller/templates/views/
|
72
|
+
- lib/generators/admin/scaffold_controller/templates/tests/test_unit/functional_test.rb.erb
|
73
|
+
- lib/generators/admin/scaffold_controller/templates/controllers/jbuilder/controller.rb.erb
|
74
|
+
- lib/generators/admin/scaffold_controller/templates/controllers/railties/controller.rb.erb
|
75
|
+
- lib/generators/admin/scaffold_controller/templates/views/haml/new.html.haml.erb
|
76
|
+
- lib/generators/admin/scaffold_controller/templates/views/haml/_form.html.haml.erb
|
77
|
+
- lib/generators/admin/scaffold_controller/templates/views/haml/show.html.haml.erb
|
78
|
+
- lib/generators/admin/scaffold_controller/templates/views/haml/edit.html.haml.erb
|
79
|
+
- lib/generators/admin/scaffold_controller/templates/views/haml/index.html.haml.erb
|
80
|
+
- lib/generators/admin/scaffold_controller/templates/views/jbuilder/show.json.jbuilder.erb
|
81
|
+
- lib/generators/admin/scaffold_controller/templates/views/jbuilder/index.json.jbuilder.erb
|
82
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/show.html.erb.erb
|
83
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/_form.html.erb.erb
|
84
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/new.html.erb.erb
|
85
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/edit.html.erb.erb
|
86
|
+
- lib/generators/admin/scaffold_controller/templates/views/erb/index.html.erb.erb
|
99
87
|
- lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb
|
100
88
|
- lib/generators/admin/scaffold_controller/USAGE
|
101
89
|
- lib/rails_admin_scaffold.rb
|