railstar 0.0.5 → 0.0.6
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.
- data/Rakefile +2 -0
- data/app/assets/images/railstar/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/railstar/glyphicons-halflings.png +0 -0
- data/app/assets/javascripts/railstar/application.js +15 -0
- data/app/assets/javascripts/railstar/bootstrap.min.js +7 -0
- data/app/assets/javascripts/railstar/feedbacks.js +2 -0
- data/app/assets/javascripts/railstar/general.js +2 -0
- data/app/assets/stylesheets/railstar/application.css +13 -0
- data/app/assets/stylesheets/railstar/bootstrap.min.css +643 -0
- data/app/assets/stylesheets/railstar/feedbacks.css +4 -0
- data/app/assets/stylesheets/railstar/general.css +4 -0
- data/app/controllers/railstar/application_controller.rb +4 -0
- data/app/controllers/railstar/feedbacks_controller.rb +4 -0
- data/app/controllers/railstar/general_controller.rb +19 -0
- data/app/helpers/railstar/application_helper.rb +4 -0
- data/app/helpers/railstar/feedbacks_helper.rb +4 -0
- data/app/helpers/railstar/general_helper.rb +4 -0
- data/app/views/layouts/railstar/application.html.erb +52 -0
- data/app/views/railstar/general/code.html.erb +83 -0
- data/app/views/railstar/general/database.html.erb +40 -0
- data/app/views/railstar/general/index.html.erb +33 -0
- data/config/routes.rb +8 -0
- data/lib/generators/railstar/install/USAGE +8 -0
- data/lib/generators/railstar/install/install_generator.rb +7 -0
- data/lib/generators/railstar/install/templates/railstar.yml +10 -0
- data/lib/generators/railstar/scaffold/USAGE +8 -0
- data/lib/generators/railstar/scaffold/scaffold_generator.rb +39 -0
- data/lib/generators/railstar/scaffold/templates/controller.rb +59 -0
- data/lib/generators/railstar/scaffold/templates/views/_detail.html.erb +10 -0
- data/lib/generators/railstar/scaffold/templates/views/_form.html.erb +19 -0
- data/lib/generators/railstar/scaffold/templates/views/confirm.html.erb +9 -0
- data/lib/generators/railstar/scaffold/templates/views/destroy.html.erb +12 -0
- data/lib/generators/railstar/scaffold/templates/views/edit.html.erb +8 -0
- data/lib/generators/railstar/scaffold/templates/views/index.html.erb +31 -0
- data/lib/generators/railstar/scaffold/templates/views/new.html.erb +7 -0
- data/lib/generators/railstar/scaffold/templates/views/show.html.erb +8 -0
- data/lib/railstar/engine.rb +5 -0
- data/lib/railstar/helper.rb +66 -0
- data/lib/railstar/version.rb +1 -1
- data/lib/railstar.rb +20 -0
- data/test/dummy/app/assets/javascripts/general.js +2 -0
- data/test/dummy/app/assets/javascripts/tasks.js +2 -0
- data/test/dummy/app/assets/stylesheets/general.css +4 -0
- data/test/dummy/app/assets/stylesheets/scaffold.css +56 -0
- data/test/dummy/app/assets/stylesheets/tasks.css +4 -0
- data/test/dummy/app/controllers/general_controller.rb +4 -0
- data/test/dummy/app/controllers/projects_controller.rb +59 -0
- data/test/dummy/app/controllers/tasks_controller.rb +83 -0
- data/test/dummy/app/helpers/general_helper.rb +2 -0
- data/test/dummy/app/helpers/tasks_helper.rb +2 -0
- data/test/dummy/app/models/project.rb +2 -0
- data/test/dummy/app/models/task.rb +2 -0
- data/test/dummy/app/views/general/index.html.erb +1 -0
- data/test/dummy/app/views/projects/_detail.html.erb +8 -0
- data/test/dummy/app/views/projects/_form.html.erb +17 -0
- data/test/dummy/app/views/projects/confirm.html.erb +9 -0
- data/test/dummy/app/views/projects/destroy.html.erb +12 -0
- data/test/dummy/app/views/projects/edit.html.erb +8 -0
- data/test/dummy/app/views/projects/index.html.erb +27 -0
- data/test/dummy/app/views/projects/new.html.erb +7 -0
- data/test/dummy/app/views/projects/show.html.erb +8 -0
- data/test/dummy/app/views/tasks/_form.html.erb +29 -0
- data/test/dummy/app/views/tasks/edit.html.erb +6 -0
- data/test/dummy/app/views/tasks/index.html.erb +27 -0
- data/test/dummy/app/views/tasks/new.html.erb +5 -0
- data/test/dummy/app/views/tasks/show.html.erb +20 -0
- data/test/dummy/config/initializers/secret_token.rb +1 -1
- data/test/dummy/config/railstar.yml +10 -0
- data/test/dummy/config/routes.rb +5 -56
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20120305073308_create_tasks.rb +11 -0
- data/test/dummy/db/migrate/20120306035929_create_projects.rb +9 -0
- data/test/dummy/db/schema.rb +30 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +15372 -0
- data/test/dummy/test/fixtures/projects.yml +7 -0
- data/test/dummy/test/fixtures/tasks.yml +11 -0
- data/test/dummy/test/functional/general_controller_test.rb +9 -0
- data/test/dummy/test/functional/tasks_controller_test.rb +49 -0
- data/test/dummy/test/unit/helpers/general_helper_test.rb +4 -0
- data/test/dummy/test/unit/helpers/tasks_helper_test.rb +4 -0
- data/test/dummy/test/unit/project_test.rb +7 -0
- data/test/dummy/test/unit/task_test.rb +7 -0
- data/test/dummy/tmp/cache/assets/BDB/F80/sprockets%2Fd092351b54cb720432480172c4550671 +0 -0
- data/test/dummy/tmp/cache/assets/C0E/6F0/sprockets%2F26725ce722134754103cc60f4113f741 +0 -0
- data/test/dummy/tmp/cache/assets/C16/850/sprockets%2Ff4c43aa1311657553d81a21368338645 +0 -0
- data/test/dummy/tmp/cache/assets/C41/B70/sprockets%2F711502a8b1581b81fae03815e6943350 +0 -0
- data/test/dummy/tmp/cache/assets/C4C/070/sprockets%2F340993b012bf8035917e042533856bfe +0 -0
- data/test/dummy/tmp/cache/assets/C53/DB0/sprockets%2F40d0821d8f791b174067645637bf4e24 +0 -0
- data/test/dummy/tmp/cache/assets/C76/160/sprockets%2F49c594d143212b346d11f1ecf9358103 +0 -0
- data/test/dummy/tmp/cache/assets/C8C/B80/sprockets%2F371bf96e99717688ed7313a0c53f4212 +0 -0
- data/test/dummy/tmp/cache/assets/CA7/800/sprockets%2Fe69178b5678ba83ba797559476fd6771 +0 -0
- data/test/dummy/tmp/cache/assets/CC1/390/sprockets%2F6c2a3ad7293b20d74f629fd692953985 +0 -0
- data/test/dummy/tmp/cache/assets/CD1/190/sprockets%2F2dfba8128914fcc04e4621b03b614656 +0 -0
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/CEB/770/sprockets%2Fd47389dcf7a3411b695e5a7f88032e42 +0 -0
- data/test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +0 -0
- data/test/dummy/tmp/cache/assets/D02/840/sprockets%2F5c24c1571e8550c21caf59bfa2048b63 +0 -0
- data/test/dummy/tmp/cache/assets/D06/910/sprockets%2Fcd3a511c04c4949626d23b83de17c37b +0 -0
- data/test/dummy/tmp/cache/assets/D1A/340/sprockets%2Fc91959db477af6672fae11158d0e574a +0 -0
- data/test/dummy/tmp/cache/assets/D1D/F20/sprockets%2Fd6bb8c79b5667def69f4301e7013628b +0 -0
- data/test/dummy/tmp/cache/assets/D2C/E30/sprockets%2F1142f2a14b9b84e21b28f864d223bdbb +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D43/620/sprockets%2F179c3d423f233e8ad85e1e59bf14c4a8 +0 -0
- data/test/dummy/tmp/cache/assets/D45/650/sprockets%2F751853950dfa5eaa0329d25cf68ad4e9 +0 -0
- data/test/dummy/tmp/cache/assets/D46/0F0/sprockets%2F268fc8d914b620b386f2abcdf846085c +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/D5E/4E0/sprockets%2F27425a534e3a0132fc0b54ceced18f5f +0 -0
- data/test/dummy/tmp/cache/assets/D6F/530/sprockets%2F4b2f4da153cfe1bf54f95b25f1b94646 +0 -0
- data/test/dummy/tmp/cache/assets/D70/CD0/sprockets%2F4c8b0d0ed73cf706749e0f44ca4b49e3 +0 -0
- data/test/dummy/tmp/cache/assets/D72/F00/sprockets%2Fab9c6d46e48d2f4e92085bd1a921da66 +0 -0
- data/test/dummy/tmp/cache/assets/D89/460/sprockets%2Fd3da7452aa3ad6cf1528dcf542af0043 +0 -0
- data/test/dummy/tmp/cache/assets/D9A/290/sprockets%2F6190a38e1e28b2d90e3fb276af7bbbd5 +0 -0
- data/test/dummy/tmp/cache/assets/DA8/900/sprockets%2Fde7a2b3987b89b9d9afb268ce4204a4a +0 -0
- data/test/dummy/tmp/cache/assets/DD2/B10/sprockets%2F3fbe0f1ad09409fb8f1c66767bdd35bf +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/DF0/4D0/sprockets%2F6af61cc3fe9e7d3f7e758e38ff649ed2 +0 -0
- data/test/dummy/tmp/cache/assets/DFC/960/sprockets%2Fc9e6a7da83b5ea8666fa4422cabfa80b +0 -0
- data/test/dummy/tmp/cache/assets/E04/5A0/sprockets%2Fc8052f0d827a69d3feef3e3efef0e4b2 +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E21/980/sprockets%2F1888a60aeec9e026ccc1b4e8a2a2acdf +0 -0
- data/test/dummy/tmp/cache/assets/E28/6A0/sprockets%2F7d5af50b0e7b5ca1eaaf9f7a87c51e1d +0 -0
- data/test/dummy/tmp/cache/assets/E3C/400/sprockets%2Fa5d07c411dccbbba1db3fe5cae5001f6 +0 -0
- data/test/dummy/tmp/cache/assets/E50/390/sprockets%2Ff2d2b0db1ed0f3a7daedf49c2d9d0d80 +0 -0
- data/test/dummy/tmp/pids/server.pid +1 -0
- data/test/functional/railstar/feedbacks_controller_test.rb +9 -0
- data/test/functional/railstar/general_controller_test.rb +11 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/unit/helpers/railstar/feedbacks_helper_test.rb +6 -0
- data/test/unit/helpers/railstar/general_helper_test.rb +6 -0
- metadata +223 -8
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Railstar
|
|
2
|
+
class GeneralController < ApplicationController
|
|
3
|
+
layout "railstar/application"
|
|
4
|
+
|
|
5
|
+
def index
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def database
|
|
9
|
+
@connection = ActiveRecord::Base.connection
|
|
10
|
+
@tables = @connection.tables.sort
|
|
11
|
+
@tables.delete "schema_migrations"
|
|
12
|
+
|
|
13
|
+
@cols = %w(name human_name sql_type klass default type null)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def code
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="ja">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title><%= Railstar.env["product_name"] %></title>
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
|
|
8
|
+
<%= stylesheet_link_tag "railstar/application", :media => "all" %>
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
body {
|
|
11
|
+
padding-top: 60px;
|
|
12
|
+
padding-bottom: 40px;
|
|
13
|
+
}
|
|
14
|
+
.sidebar-nav {
|
|
15
|
+
padding: 9px 0;
|
|
16
|
+
}
|
|
17
|
+
</style>
|
|
18
|
+
|
|
19
|
+
<%= javascript_include_tag "railstar/application" %>
|
|
20
|
+
<%= csrf_meta_tags %>
|
|
21
|
+
|
|
22
|
+
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
|
|
23
|
+
<!--[if lt IE 9]>
|
|
24
|
+
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
|
25
|
+
<![endif]-->
|
|
26
|
+
</head>
|
|
27
|
+
|
|
28
|
+
<body>
|
|
29
|
+
<div class="navbar navbar-fixed-top">
|
|
30
|
+
<div class="navbar-inner">
|
|
31
|
+
<div class="container">
|
|
32
|
+
|
|
33
|
+
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
|
34
|
+
<span class="icon-bar"></span>
|
|
35
|
+
<span class="icon-bar"></span>
|
|
36
|
+
<span class="icon-bar"></span>
|
|
37
|
+
</a>
|
|
38
|
+
<%= link_to Railstar.env["product_name"], root_path, :class => "brand" %>
|
|
39
|
+
<div class="nav-collapse">
|
|
40
|
+
<ul class="nav">
|
|
41
|
+
<li class="<%= "active" if current_page?(database_path) %>"><%= link_to "Database", database_path %></li>
|
|
42
|
+
<li class="<%= "active" if current_page?(code_path) %>"><%= link_to "Code", code_path, {} %></li>
|
|
43
|
+
</ul>
|
|
44
|
+
</div><!--/.nav-collapse -->
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<%= yield %>
|
|
50
|
+
|
|
51
|
+
</body>
|
|
52
|
+
</html>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<div class="container-fluid">
|
|
2
|
+
<div class="row-fluid">
|
|
3
|
+
<div class="span3">
|
|
4
|
+
<div class="well sidebar-nav">
|
|
5
|
+
<ul class="nav nav-list">
|
|
6
|
+
|
|
7
|
+
<li class="nav-header">Sidebar</li>
|
|
8
|
+
<li class="active"><a href="#">Link</a></li>
|
|
9
|
+
<li><a href="#">Link</a></li>
|
|
10
|
+
<li><a href="#">Link</a></li>
|
|
11
|
+
<li><a href="#">Link</a></li>
|
|
12
|
+
<li class="nav-header">Sidebar</li>
|
|
13
|
+
|
|
14
|
+
<li><a href="#">Link</a></li>
|
|
15
|
+
<li><a href="#">Link</a></li>
|
|
16
|
+
<li><a href="#">Link</a></li>
|
|
17
|
+
<li><a href="#">Link</a></li>
|
|
18
|
+
<li><a href="#">Link</a></li>
|
|
19
|
+
<li><a href="#">Link</a></li>
|
|
20
|
+
|
|
21
|
+
<li class="nav-header">Sidebar</li>
|
|
22
|
+
<li><a href="#">Link</a></li>
|
|
23
|
+
<li><a href="#">Link</a></li>
|
|
24
|
+
<li><a href="#">Link</a></li>
|
|
25
|
+
</ul>
|
|
26
|
+
</div><!--/.well -->
|
|
27
|
+
</div><!--/span-->
|
|
28
|
+
|
|
29
|
+
<div class="span9">
|
|
30
|
+
<div class="hero-unit">
|
|
31
|
+
<h1>Hello, world!</h1>
|
|
32
|
+
<p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
|
|
33
|
+
<p><a class="btn btn-primary btn-large">Learn more »</a></p>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="row-fluid">
|
|
36
|
+
|
|
37
|
+
<div class="span4">
|
|
38
|
+
<h2>Heading</h2>
|
|
39
|
+
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
|
|
40
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
41
|
+
</div><!--/span-->
|
|
42
|
+
<div class="span4">
|
|
43
|
+
<h2>Heading</h2>
|
|
44
|
+
|
|
45
|
+
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
|
|
46
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
47
|
+
</div><!--/span-->
|
|
48
|
+
<div class="span4">
|
|
49
|
+
<h2>Heading</h2>
|
|
50
|
+
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
|
|
51
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
52
|
+
|
|
53
|
+
</div><!--/span-->
|
|
54
|
+
</div><!--/row-->
|
|
55
|
+
<div class="row-fluid">
|
|
56
|
+
<div class="span4">
|
|
57
|
+
<h2>Heading</h2>
|
|
58
|
+
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
|
|
59
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
60
|
+
|
|
61
|
+
</div><!--/span-->
|
|
62
|
+
<div class="span4">
|
|
63
|
+
<h2>Heading</h2>
|
|
64
|
+
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
|
|
65
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
66
|
+
</div><!--/span-->
|
|
67
|
+
<div class="span4">
|
|
68
|
+
|
|
69
|
+
<h2>Heading</h2>
|
|
70
|
+
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
|
|
71
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
72
|
+
</div><!--/span-->
|
|
73
|
+
</div><!--/row-->
|
|
74
|
+
</div><!--/span-->
|
|
75
|
+
</div><!--/row-->
|
|
76
|
+
|
|
77
|
+
<hr>
|
|
78
|
+
|
|
79
|
+
<footer>
|
|
80
|
+
<p>© Company 2012</p>
|
|
81
|
+
</footer>
|
|
82
|
+
|
|
83
|
+
</div><!--/.fluid-container-->
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<div class="container-fluid">
|
|
2
|
+
<div class="row-fluid">
|
|
3
|
+
<div class="span2">
|
|
4
|
+
<div class="well sidebar-nav">
|
|
5
|
+
<ul class="nav nav-list">
|
|
6
|
+
|
|
7
|
+
<li class="nav-header">Tables</li>
|
|
8
|
+
<% @tables.each do |table| %>
|
|
9
|
+
<li><%= link_to table, :anchor => table %></li>
|
|
10
|
+
<% end %>
|
|
11
|
+
</ul>
|
|
12
|
+
</div><!--/.well -->
|
|
13
|
+
</div><!--/span-->
|
|
14
|
+
|
|
15
|
+
<div class="span10">
|
|
16
|
+
<% @tables.each do |table| %>
|
|
17
|
+
<a name="<%= table %>"></a><h2><%= table %></h2>
|
|
18
|
+
<table class="table table-bordered table-condensed">
|
|
19
|
+
<thead>
|
|
20
|
+
<tr>
|
|
21
|
+
<% @cols.each do |c| %>
|
|
22
|
+
<th><%= c %></th>
|
|
23
|
+
<% end %>
|
|
24
|
+
</tr>
|
|
25
|
+
</thead>
|
|
26
|
+
<tbody>
|
|
27
|
+
<% @connection.columns(table).each do |column| %>
|
|
28
|
+
<tr>
|
|
29
|
+
<% @cols.each do |c| %>
|
|
30
|
+
<td><%= column.send(c) %></td>
|
|
31
|
+
<% end %>
|
|
32
|
+
</tr>
|
|
33
|
+
<% end %>
|
|
34
|
+
</tbody>
|
|
35
|
+
</table>
|
|
36
|
+
<% end %>
|
|
37
|
+
</div><!--/span-->
|
|
38
|
+
</div><!--/row-->
|
|
39
|
+
|
|
40
|
+
</div><!--/.fluid-container-->
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<div class="container">
|
|
2
|
+
|
|
3
|
+
<!-- Main hero unit for a primary marketing message or call to action -->
|
|
4
|
+
<div class="hero-unit">
|
|
5
|
+
<h1>Hello, world!</h1>
|
|
6
|
+
<p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
|
|
7
|
+
<p><a class="btn btn-primary btn-large">Learn more »</a></p>
|
|
8
|
+
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<!-- Example row of columns -->
|
|
12
|
+
<div class="row">
|
|
13
|
+
<div class="span4">
|
|
14
|
+
<h2>Heading</h2>
|
|
15
|
+
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
|
|
16
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
<div class="span4">
|
|
20
|
+
<h2>Heading</h2>
|
|
21
|
+
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
|
|
22
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="span4">
|
|
25
|
+
|
|
26
|
+
<h2>Heading</h2>
|
|
27
|
+
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
|
|
28
|
+
<p><a class="btn" href="#">View details »</a></p>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<hr>
|
|
33
|
+
</div> <!-- /container -->
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
class Railstar::ScaffoldGenerator < Rails::Generators::NamedBase
|
|
2
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
3
|
+
|
|
4
|
+
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
|
5
|
+
class_option :model, :type => :string, :default => nil
|
|
6
|
+
|
|
7
|
+
def create_scaffold_file
|
|
8
|
+
template "controller.rb", "app/controllers/#{plural_name}_controller.rb"
|
|
9
|
+
|
|
10
|
+
view_files.each do |f|
|
|
11
|
+
template "views/#{f}.html.erb", "app/views/#{plural_name}/#{f}.html.erb"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def model_class_name
|
|
16
|
+
if options.model.present?
|
|
17
|
+
options.model.singularize.camelize
|
|
18
|
+
else
|
|
19
|
+
class_name.demodulize.singularize
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def controller_class_name
|
|
24
|
+
class_name.pluralize
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def controller_file_name
|
|
28
|
+
controller_class_name.underscore
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def singular_name
|
|
32
|
+
controller_file_name.singularize
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
def view_files
|
|
37
|
+
%w(_form _detail confirm index show new edit destroy)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# destroyメソッドに注意。モバイル対応&テキストリンク利用のためイレギュラーなことをしている
|
|
3
|
+
# restに対応した形を徹底したい場合は、削除確認ページへのリンクを以下の様に、formにする
|
|
4
|
+
# <%%= form_tag(<%= class_name %>_path(<%= file_name %>, :mode => "draft"), :method=>:delete) do %><%%= submit_tag "delete", :name => "delete" %><%% end %>
|
|
5
|
+
|
|
6
|
+
class <%= controller_class_name %>Controller < ApplicationController
|
|
7
|
+
def index
|
|
8
|
+
@<%= plural_name %> = <%= model_class_name %>.order("created_at desc").all
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def show
|
|
12
|
+
@<%= singular_name %> = <%= model_class_name %>.find(params[:id])
|
|
13
|
+
render "destroy" if params[:mode] == "draft"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def new
|
|
17
|
+
@<%= singular_name %> = <%= model_class_name %>.new(params[:<%= singular_name %>])
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def edit
|
|
21
|
+
@<%= singular_name %> = <%= model_class_name %>.find(params[:id])
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def create
|
|
25
|
+
@<%= singular_name %> = <%= model_class_name %>.new(params[:<%= singular_name %>])
|
|
26
|
+
save
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def update
|
|
30
|
+
@<%= singular_name %> = <%= model_class_name %>.find(params[:id])
|
|
31
|
+
@<%= singular_name %>.attributes = params[:<%= singular_name %>]
|
|
32
|
+
save
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def destroy
|
|
36
|
+
@<%= singular_name %> = <%= model_class_name %>.find(params[:id])
|
|
37
|
+
if params.key?("back")
|
|
38
|
+
redirect_to(<%= singular_name %>_url)
|
|
39
|
+
elsif params[:mode] != "draft"
|
|
40
|
+
@<%= singular_name %>.destroy
|
|
41
|
+
redirect_to(<%= singular_name %>_url, :notice => "deleted success.")
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
def save
|
|
48
|
+
if !params.key?("back") && @<%= file_name %>.valid?
|
|
49
|
+
if params[:mode] == "draft"
|
|
50
|
+
render :action => 'confirm'
|
|
51
|
+
else
|
|
52
|
+
@<%= file_name %>.save!
|
|
53
|
+
redirect_to <%= singular_name %>_path(@<%= singular_name %>), :notice => 'saved success.'
|
|
54
|
+
end
|
|
55
|
+
else
|
|
56
|
+
render (@<%= singular_name %>.new_record? ? :new : :edit)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<%%= form_for(@<%= singular_name %>, :url => save_action(@<%= singular_name %>, :mode => "draft")) do |f| %>
|
|
2
|
+
<%% if @<%= singular_name %>.errors.any? %>
|
|
3
|
+
<%% @<%= singular_name %>.errors.full_messages.each do |msg| %>
|
|
4
|
+
<p><%%= msg %></p>
|
|
5
|
+
<%% end %>
|
|
6
|
+
<%% end %>
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
<table class="bordered-table zebra-striped">
|
|
10
|
+
<% for attribute in attributes -%>
|
|
11
|
+
<tr>
|
|
12
|
+
<th><%%= f.label :<%= attribute.name %> %></th>
|
|
13
|
+
<td><%%= f.<%= attribute.field_type %> :<%= attribute.name %> %></td>
|
|
14
|
+
</tr>
|
|
15
|
+
<% end -%>
|
|
16
|
+
</table>
|
|
17
|
+
|
|
18
|
+
<%%= f.submit :class => "btn primary" %>
|
|
19
|
+
<%% end %>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<h1>Confirm <%= singular_name %></h1>
|
|
2
|
+
|
|
3
|
+
<%%= render :partial => 'detail' %>
|
|
4
|
+
|
|
5
|
+
<%%= form_tag({}, :method => request.request_method) do %>
|
|
6
|
+
<%%= raw params_to_hidden_tag :<%= singular_name %> %>
|
|
7
|
+
<input type="submit" value="戻る" name="back" class="btn" />
|
|
8
|
+
<input type="submit" value="保存" class="btn primary" />
|
|
9
|
+
<%% end %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<h1>Destroy <%= singular_name %></h1>
|
|
2
|
+
|
|
3
|
+
<%%= render :partial => 'detail' %>
|
|
4
|
+
|
|
5
|
+
<%%= form_tag({}, :method => "delete") do -%>
|
|
6
|
+
<input type="submit" value="Cancel" name="back" class="btn" />
|
|
7
|
+
<input type="submit" value="Destroy" class="btn error" />
|
|
8
|
+
<%% end -%>
|
|
9
|
+
|
|
10
|
+
<div>
|
|
11
|
+
<%%= link_to 'Back', <%= plural_name %>_path, :class => "btn" %>
|
|
12
|
+
</div>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<h1>Listing <%= plural_name %></h1>
|
|
2
|
+
|
|
3
|
+
<table>
|
|
4
|
+
<thead>
|
|
5
|
+
<tr>
|
|
6
|
+
<% for attribute in attributes -%>
|
|
7
|
+
<th><%= attribute.human_name %></th>
|
|
8
|
+
<% end -%>
|
|
9
|
+
<th></th>
|
|
10
|
+
<th></th>
|
|
11
|
+
<th></th>
|
|
12
|
+
</tr>
|
|
13
|
+
</thead>
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
<tbody>
|
|
17
|
+
<%% @<%= plural_name %>.each do |<%= singular_name %>| %>
|
|
18
|
+
<tr>
|
|
19
|
+
<% for attribute in attributes -%>
|
|
20
|
+
<th><%= attribute.human_name.titleize %></th>
|
|
21
|
+
<td><%%= <%= file_name %>.<%= attribute.name %> %></td>
|
|
22
|
+
<% end -%>
|
|
23
|
+
<td><%%= link_to 'Show', <%= singular_name %> %></td>
|
|
24
|
+
<td><%%= link_to 'Edit', edit_<%= singular_name %>_path(<%= singular_name %>) %></td>
|
|
25
|
+
<td><%%= link_to 'Delete', <%= singular_name %>_path(<%= singular_name %>, :mode => "draft") %></td>
|
|
26
|
+
</tr>
|
|
27
|
+
<%% end %>
|
|
28
|
+
</tbody>
|
|
29
|
+
</table>
|
|
30
|
+
|
|
31
|
+
<%%= link_to 'New <%= human_name %>', new_<%= singular_name %>_path %>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module Railstar
|
|
2
|
+
module Helper
|
|
3
|
+
def title(page_title)
|
|
4
|
+
content_for(:title) { page_title }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def stylesheet(*css)
|
|
8
|
+
content_for(:head) { stylesheet_link_tag(*css) }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def javascript(*js)
|
|
12
|
+
content_for(:head) { javascript_include_tag(*js) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def auto_discovery_rss(rss)
|
|
16
|
+
content_for(:head) do
|
|
17
|
+
%Q(<link rel="alternate" type="application/rss+xml" href="#{rss}" title="RSS 2.0" />)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def hbr(str)
|
|
22
|
+
str = html_escape(str)
|
|
23
|
+
br(str)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def br(str)
|
|
27
|
+
str.gsub(/\r\n|\r|\n/, "<br />")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def url2link(str)
|
|
31
|
+
str.gsub(/(https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+)/){"<a href='#{$1}'>#{$1}</a>"}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def params_to_hidden_tag(object, options={})
|
|
35
|
+
str = ''
|
|
36
|
+
str << hidden_field_tag('back', 1) if options[:back]
|
|
37
|
+
attributes = params[object]
|
|
38
|
+
return str unless attributes
|
|
39
|
+
attributes.each do |method,value|
|
|
40
|
+
next if options[:except] && options[:except].include?(method.to_sym)
|
|
41
|
+
if value.is_a? Hash
|
|
42
|
+
value.each do |k,v|
|
|
43
|
+
if v.is_a? Hash
|
|
44
|
+
v.each do |l,w|
|
|
45
|
+
str << hidden_field_tag("#{object}[#{method}][#{k}][#{l}]", w)
|
|
46
|
+
end
|
|
47
|
+
else
|
|
48
|
+
str << hidden_field_tag("#{object}[#{method}][#{k}]", v)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
else
|
|
52
|
+
str << hidden_field(object, method, :value => attributes[method])
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
raw(str)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def save_action(object, options={})
|
|
59
|
+
if object.new_record?
|
|
60
|
+
{:action => "create"}
|
|
61
|
+
else
|
|
62
|
+
{:action => "update", :id => object}
|
|
63
|
+
end.merge(options)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
data/lib/railstar/version.rb
CHANGED
data/lib/railstar.rb
CHANGED
|
@@ -1,2 +1,22 @@
|
|
|
1
|
+
require 'railstar/engine'
|
|
2
|
+
|
|
3
|
+
require 'railstar/helper'
|
|
4
|
+
ActionView::Base.send(:include, Railstar::Helper)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
1
8
|
module Railstar
|
|
9
|
+
def self.env
|
|
10
|
+
@env ||= load_env
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.load_env
|
|
14
|
+
puts "################# LOAD railstar.yml #################"
|
|
15
|
+
if File.exist?(file = File.join(Rails.root.to_s, 'config', 'railstar.yml'))
|
|
16
|
+
rs = YAML.load_file(file)
|
|
17
|
+
(rs["default"] || {}).merge(rs[Rails.env] || {})
|
|
18
|
+
else
|
|
19
|
+
{}
|
|
20
|
+
end
|
|
21
|
+
end
|
|
2
22
|
end
|