ruboss4ruby 1.0.1
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/History.txt +3 -0
- data/Manifest.txt +102 -0
- data/README.txt +37 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +72 -0
- data/config/requirements.rb +15 -0
- data/gpl-3.0.txt +674 -0
- data/lib/ruboss4ruby/active_foo.rb +127 -0
- data/lib/ruboss4ruby/active_record_tasks.rb +75 -0
- data/lib/ruboss4ruby/configuration.rb +38 -0
- data/lib/ruboss4ruby/tasks.rb +81 -0
- data/lib/ruboss4ruby/version.rb +11 -0
- data/lib/ruboss4ruby.rb +61 -0
- data/merb_generators/ruboss_config/USAGE +18 -0
- data/merb_generators/ruboss_config/ruboss_config_generator.rb +135 -0
- data/merb_generators/ruboss_config/templates/actionscript.properties +16 -0
- data/merb_generators/ruboss_config/templates/actionscriptair.properties +16 -0
- data/merb_generators/ruboss_config/templates/expressInstall.swf +0 -0
- data/merb_generators/ruboss_config/templates/flex.properties +2 -0
- data/merb_generators/ruboss_config/templates/html-template/AC_OETags.js +276 -0
- data/merb_generators/ruboss_config/templates/html-template/history/history.css +6 -0
- data/merb_generators/ruboss_config/templates/html-template/history/history.js +645 -0
- data/merb_generators/ruboss_config/templates/html-template/history/historyFrame.html +29 -0
- data/merb_generators/ruboss_config/templates/html-template/index.template.html +121 -0
- data/merb_generators/ruboss_config/templates/html-template/playerProductInstall.swf +0 -0
- data/merb_generators/ruboss_config/templates/index.html.erb +19 -0
- data/merb_generators/ruboss_config/templates/mainair-app.xml +134 -0
- data/merb_generators/ruboss_config/templates/mainapp.mxml +34 -0
- data/merb_generators/ruboss_config/templates/project.properties +18 -0
- data/merb_generators/ruboss_config/templates/projectair.properties +24 -0
- data/merb_generators/ruboss_config/templates/swfobject.js +5 -0
- data/merb_generators/ruboss_controller/USAGE +11 -0
- data/merb_generators/ruboss_controller/ruboss_controller_generator.rb +32 -0
- data/merb_generators/ruboss_controller/templates/controller.as.erb +35 -0
- data/merb_generators/ruboss_resource_controller/USAGE +5 -0
- data/merb_generators/ruboss_resource_controller/ruboss_resource_controller_generator.rb +70 -0
- data/merb_generators/ruboss_resource_controller/templates/app/controllers/%controller_file_name%.rb +55 -0
- data/merb_generators/ruboss_resource_controller/templates/app/helpers/%controller_file_name%_helper.rb +16 -0
- data/merb_generators/ruboss_scaffold/USAGE +5 -0
- data/merb_generators/ruboss_scaffold/ruboss_scaffold_generator.rb +189 -0
- data/merb_generators/ruboss_scaffold/templates/component.mxml.erb +148 -0
- data/merb_generators/ruboss_scaffold/templates/fixtures.yml.erb +35 -0
- data/merb_generators/ruboss_scaffold/templates/migration.rb.erb +19 -0
- data/merb_generators/ruboss_scaffold/templates/model.as.erb +42 -0
- data/merb_generators/ruboss_scaffold/templates/model.rb.erb +11 -0
- data/merb_generators/ruboss_yaml_scaffold/USAGE +5 -0
- data/merb_generators/ruboss_yaml_scaffold/ruboss_yaml_scaffold_generator.rb +53 -0
- data/rails_generators/ruboss_config/USAGE +18 -0
- data/rails_generators/ruboss_config/ruboss_config_generator.rb +127 -0
- data/rails_generators/ruboss_config/templates/actionscript.properties +16 -0
- data/rails_generators/ruboss_config/templates/actionscriptair.properties +16 -0
- data/rails_generators/ruboss_config/templates/expressInstall.swf +0 -0
- data/rails_generators/ruboss_config/templates/flex.properties +2 -0
- data/rails_generators/ruboss_config/templates/html-template/AC_OETags.js +276 -0
- data/rails_generators/ruboss_config/templates/html-template/history/history.css +6 -0
- data/rails_generators/ruboss_config/templates/html-template/history/history.js +645 -0
- data/rails_generators/ruboss_config/templates/html-template/history/historyFrame.html +29 -0
- data/rails_generators/ruboss_config/templates/html-template/index.template.html +121 -0
- data/rails_generators/ruboss_config/templates/html-template/playerProductInstall.swf +0 -0
- data/rails_generators/ruboss_config/templates/index.html.erb +19 -0
- data/rails_generators/ruboss_config/templates/mainair-app.xml +134 -0
- data/rails_generators/ruboss_config/templates/mainapp.mxml +34 -0
- data/rails_generators/ruboss_config/templates/project.properties +18 -0
- data/rails_generators/ruboss_config/templates/projectair.properties +24 -0
- data/rails_generators/ruboss_config/templates/ruboss.yml +16 -0
- data/rails_generators/ruboss_config/templates/ruboss_tasks.rake +15 -0
- data/rails_generators/ruboss_config/templates/swfobject.js +5 -0
- data/rails_generators/ruboss_controller/USAGE +11 -0
- data/rails_generators/ruboss_controller/ruboss_controller_generator.rb +46 -0
- data/rails_generators/ruboss_controller/templates/controller.as.erb +35 -0
- data/rails_generators/ruboss_scaffold/USAGE +35 -0
- data/rails_generators/ruboss_scaffold/ruboss_scaffold_generator.rb +192 -0
- data/rails_generators/ruboss_scaffold/templates/component.mxml.erb +148 -0
- data/rails_generators/ruboss_scaffold/templates/controller.rb.erb +97 -0
- data/rails_generators/ruboss_scaffold/templates/fixtures.yml.erb +35 -0
- data/rails_generators/ruboss_scaffold/templates/migration.rb.erb +19 -0
- data/rails_generators/ruboss_scaffold/templates/model.as.erb +42 -0
- data/rails_generators/ruboss_scaffold/templates/model.rb.erb +11 -0
- data/rails_generators/ruboss_yaml_scaffold/USAGE +14 -0
- data/rails_generators/ruboss_yaml_scaffold/ruboss_yaml_scaffold_generator.rb +45 -0
- data/rcl-1.0.txt +0 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +82 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +17 -0
- data/test/active_foo_test.rb +16 -0
- data/test/test_generator_helper.rb +29 -0
- data/test/test_helper.rb +2 -0
- data/test/test_ruboss_config_generator.rb +45 -0
- data/test/test_ruboss_controller_generator.rb +45 -0
- data/test/test_ruboss_on_ruby.rb +11 -0
- data/test/test_ruboss_scaffold_generator.rb +45 -0
- data/test/test_ruboss_yaml_scaffold_generator.rb +46 -0
- data/website/index.html +63 -0
- data/website/index.txt +34 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +138 -0
- data/website/template.html.erb +47 -0
- metadata +167 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<!-- saved from url=(0014)about:internet -->
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<!--
|
|
5
|
+
Smart developers always View Source.
|
|
6
|
+
|
|
7
|
+
This application was built using Adobe Flex, an open source framework
|
|
8
|
+
for building rich Internet applications that get delivered via the
|
|
9
|
+
Flash Player or to desktops via Adobe AIR.
|
|
10
|
+
|
|
11
|
+
Learn more about Flex at http://flex.org
|
|
12
|
+
// -->
|
|
13
|
+
|
|
14
|
+
<head>
|
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
16
|
+
|
|
17
|
+
<!-- BEGIN Browser History required section -->
|
|
18
|
+
<link rel="stylesheet" type="text/css" href="history/history.css" />
|
|
19
|
+
<!-- END Browser History required section -->
|
|
20
|
+
|
|
21
|
+
<title>${title}</title>
|
|
22
|
+
<script src="AC_OETags.js" language="javascript"></script>
|
|
23
|
+
|
|
24
|
+
<!-- BEGIN Browser History required section -->
|
|
25
|
+
<script src="history/history.js" language="javascript"></script>
|
|
26
|
+
<!-- END Browser History required section -->
|
|
27
|
+
|
|
28
|
+
<style>
|
|
29
|
+
body { margin: 0px; overflow:hidden }
|
|
30
|
+
</style>
|
|
31
|
+
<script language="JavaScript" type="text/javascript">
|
|
32
|
+
<!--
|
|
33
|
+
// -----------------------------------------------------------------------------
|
|
34
|
+
// Globals
|
|
35
|
+
// Major version of Flash required
|
|
36
|
+
var requiredMajorVersion = ${version_major};
|
|
37
|
+
// Minor version of Flash required
|
|
38
|
+
var requiredMinorVersion = ${version_minor};
|
|
39
|
+
// Minor version of Flash required
|
|
40
|
+
var requiredRevision = ${version_revision};
|
|
41
|
+
// -----------------------------------------------------------------------------
|
|
42
|
+
// -->
|
|
43
|
+
</script>
|
|
44
|
+
</head>
|
|
45
|
+
|
|
46
|
+
<body scroll="no">
|
|
47
|
+
<script language="JavaScript" type="text/javascript">
|
|
48
|
+
<!--
|
|
49
|
+
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
|
|
50
|
+
var hasProductInstall = DetectFlashVer(6, 0, 65);
|
|
51
|
+
|
|
52
|
+
// Version check based upon the values defined in globals
|
|
53
|
+
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
|
|
54
|
+
|
|
55
|
+
if ( hasProductInstall && !hasRequestedVersion ) {
|
|
56
|
+
// DO NOT MODIFY THE FOLLOWING FOUR LINES
|
|
57
|
+
// Location visited after installation is complete if installation is required
|
|
58
|
+
var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
|
|
59
|
+
var MMredirectURL = window.location;
|
|
60
|
+
document.title = document.title.slice(0, 47) + " - Flash Player Installation";
|
|
61
|
+
var MMdoctitle = document.title;
|
|
62
|
+
|
|
63
|
+
AC_FL_RunContent(
|
|
64
|
+
"src", "playerProductInstall",
|
|
65
|
+
"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
|
|
66
|
+
"width", "${width}",
|
|
67
|
+
"height", "${height}",
|
|
68
|
+
"align", "middle",
|
|
69
|
+
"id", "${application}",
|
|
70
|
+
"quality", "high",
|
|
71
|
+
"bgcolor", "${bgcolor}",
|
|
72
|
+
"name", "${application}",
|
|
73
|
+
"allowScriptAccess","sameDomain",
|
|
74
|
+
"type", "application/x-shockwave-flash",
|
|
75
|
+
"pluginspage", "http://www.adobe.com/go/getflashplayer"
|
|
76
|
+
);
|
|
77
|
+
} else if (hasRequestedVersion) {
|
|
78
|
+
// if we've detected an acceptable version
|
|
79
|
+
// embed the Flash Content SWF when all tests are passed
|
|
80
|
+
AC_FL_RunContent(
|
|
81
|
+
"src", "${swf}",
|
|
82
|
+
"width", "${width}",
|
|
83
|
+
"height", "${height}",
|
|
84
|
+
"align", "middle",
|
|
85
|
+
"id", "${application}",
|
|
86
|
+
"quality", "high",
|
|
87
|
+
"bgcolor", "${bgcolor}",
|
|
88
|
+
"name", "${application}",
|
|
89
|
+
"allowScriptAccess","sameDomain",
|
|
90
|
+
"type", "application/x-shockwave-flash",
|
|
91
|
+
"pluginspage", "http://www.adobe.com/go/getflashplayer"
|
|
92
|
+
);
|
|
93
|
+
} else { // flash is too old or we can't detect the plugin
|
|
94
|
+
var alternateContent = 'Alternate HTML content should be placed here. '
|
|
95
|
+
+ 'This content requires the Adobe Flash Player. '
|
|
96
|
+
+ '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
|
|
97
|
+
document.write(alternateContent); // insert non-flash content
|
|
98
|
+
}
|
|
99
|
+
// -->
|
|
100
|
+
</script>
|
|
101
|
+
<noscript>
|
|
102
|
+
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
|
|
103
|
+
id="${application}" width="${width}" height="${height}"
|
|
104
|
+
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
|
|
105
|
+
<param name="movie" value="${swf}.swf" />
|
|
106
|
+
<param name="quality" value="high" />
|
|
107
|
+
<param name="bgcolor" value="${bgcolor}" />
|
|
108
|
+
<param name="allowScriptAccess" value="sameDomain" />
|
|
109
|
+
<embed src="${swf}.swf" quality="high" bgcolor="${bgcolor}"
|
|
110
|
+
width="${width}" height="${height}" name="${application}" align="middle"
|
|
111
|
+
play="true"
|
|
112
|
+
loop="false"
|
|
113
|
+
quality="high"
|
|
114
|
+
allowScriptAccess="sameDomain"
|
|
115
|
+
type="application/x-shockwave-flash"
|
|
116
|
+
pluginspage="http://www.adobe.com/go/getflashplayer">
|
|
117
|
+
</embed>
|
|
118
|
+
</object>
|
|
119
|
+
</noscript>
|
|
120
|
+
</body>
|
|
121
|
+
</html>
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<title><%= project_name %></title>
|
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
6
|
+
<script type="text/javascript" src="/javascripts/swfobject.js"></script>
|
|
7
|
+
<script type="text/javascript">
|
|
8
|
+
swfobject.embedSWF("/bin/<%= project_name %>.swf", "mainApp", "100%", "100%", "9.0.0", "expressInstall.swf");
|
|
9
|
+
</script>
|
|
10
|
+
<style>
|
|
11
|
+
body { margin: 0px; overflow: hidden; }
|
|
12
|
+
</style>
|
|
13
|
+
</head>
|
|
14
|
+
<body>
|
|
15
|
+
<div id="mainApp">
|
|
16
|
+
<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
|
|
17
|
+
</div>
|
|
18
|
+
</body>
|
|
19
|
+
</html>
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<application xmlns="http://ns.adobe.com/air/application/1.0">
|
|
3
|
+
|
|
4
|
+
<!-- Adobe AIR Application Descriptor File Template.
|
|
5
|
+
|
|
6
|
+
Specifies parameters for identifying, installing, and launching AIR applications.
|
|
7
|
+
See http://www.adobe.com/go/air_1.0_application_descriptor for complete documentation.
|
|
8
|
+
|
|
9
|
+
xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/1.0
|
|
10
|
+
The last segment of the namespace specifies the version
|
|
11
|
+
of the AIR runtime required for this application to run.
|
|
12
|
+
|
|
13
|
+
minimumPatchLevel - The minimum patch level of the AIR runtime required to run
|
|
14
|
+
the application. Optional.
|
|
15
|
+
-->
|
|
16
|
+
|
|
17
|
+
<!-- The application identifier string, unique to this application. Required. -->
|
|
18
|
+
<id><%= project_name %></id>
|
|
19
|
+
|
|
20
|
+
<!-- Used as the filename for the application. Required. -->
|
|
21
|
+
<filename><%= project_name %></filename>
|
|
22
|
+
|
|
23
|
+
<!-- The name that is displayed in the AIR application installer. Optional. -->
|
|
24
|
+
<name><%= project_name %></name>
|
|
25
|
+
|
|
26
|
+
<!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
|
|
27
|
+
<version>v1</version>
|
|
28
|
+
|
|
29
|
+
<!-- Description, displayed in the AIR application installer. Optional. -->
|
|
30
|
+
<!-- <description></description> -->
|
|
31
|
+
|
|
32
|
+
<!-- Copyright information. Optional -->
|
|
33
|
+
<!-- <copyright></copyright> -->
|
|
34
|
+
|
|
35
|
+
<!-- Settings for the application's initial window. Required. -->
|
|
36
|
+
<initialWindow>
|
|
37
|
+
<!-- The main SWF or HTML file of the application. Required. -->
|
|
38
|
+
<!-- Note: In Flex Builder, the SWF reference is set automatically. -->
|
|
39
|
+
<content>[This value will be overwritten by Flex Builder in the output app.xml]</content>
|
|
40
|
+
|
|
41
|
+
<!-- The title of the main window. Optional. -->
|
|
42
|
+
<!-- <title></title> -->
|
|
43
|
+
|
|
44
|
+
<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
|
|
45
|
+
<!-- <systemChrome></systemChrome> -->
|
|
46
|
+
|
|
47
|
+
<!-- Whether the window is transparent. Only applicable when systemChrome is false. Optional. Default false. -->
|
|
48
|
+
<!-- <transparent></transparent> -->
|
|
49
|
+
|
|
50
|
+
<!-- Whether the window is initially visible. Optional. Default false. -->
|
|
51
|
+
<!-- <visible></visible> -->
|
|
52
|
+
|
|
53
|
+
<!-- Whether the user can minimize the window. Optional. Default true. -->
|
|
54
|
+
<!-- <minimizable></minimizable> -->
|
|
55
|
+
|
|
56
|
+
<!-- Whether the user can maximize the window. Optional. Default true. -->
|
|
57
|
+
<!-- <maximizable></maximizable> -->
|
|
58
|
+
|
|
59
|
+
<!-- Whether the user can resize the window. Optional. Default true. -->
|
|
60
|
+
<!-- <resizable></resizable> -->
|
|
61
|
+
|
|
62
|
+
<!-- The window's initial width. Optional. -->
|
|
63
|
+
<!-- <width></width> -->
|
|
64
|
+
|
|
65
|
+
<!-- The window's initial height. Optional. -->
|
|
66
|
+
<!-- <height></height> -->
|
|
67
|
+
|
|
68
|
+
<!-- The window's initial x position. Optional. -->
|
|
69
|
+
<!-- <x></x> -->
|
|
70
|
+
|
|
71
|
+
<!-- The window's initial y position. Optional. -->
|
|
72
|
+
<!-- <y></y> -->
|
|
73
|
+
|
|
74
|
+
<!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
|
|
75
|
+
<!-- <minSize></minSize> -->
|
|
76
|
+
|
|
77
|
+
<!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
|
|
78
|
+
<!-- <maxSize></maxSize> -->
|
|
79
|
+
</initialWindow>
|
|
80
|
+
|
|
81
|
+
<!-- The subpath of the standard default installation location to use. Optional. -->
|
|
82
|
+
<!-- <installFolder></installFolder> -->
|
|
83
|
+
|
|
84
|
+
<!-- The subpath of the Windows Start/Programs menu to use. Optional. -->
|
|
85
|
+
<!-- <programMenuFolder></programMenuFolder> -->
|
|
86
|
+
|
|
87
|
+
<!-- The icon the system uses for the application. For at least one resolution,
|
|
88
|
+
specify the path to a PNG file included in the AIR package. Optional. -->
|
|
89
|
+
<!-- <icon>
|
|
90
|
+
<image16x16></image16x16>
|
|
91
|
+
<image32x32></image32x32>
|
|
92
|
+
<image48x48></image48x48>
|
|
93
|
+
<image128x128></image128x128>
|
|
94
|
+
</icon> -->
|
|
95
|
+
|
|
96
|
+
<!-- Whether the application handles the update when a user double-clicks an update version
|
|
97
|
+
of the AIR file (true), or the default AIR application installer handles the update (false).
|
|
98
|
+
Optional. Default false. -->
|
|
99
|
+
<!-- <customUpdateUI></customUpdateUI> -->
|
|
100
|
+
|
|
101
|
+
<!-- Whether the application can be launched when the user clicks a link in a web browser.
|
|
102
|
+
Optional. Default false. -->
|
|
103
|
+
<!-- <allowBrowserInvocation></allowBrowserInvocation> -->
|
|
104
|
+
|
|
105
|
+
<!-- Listing of file types for which the application can register. Optional. -->
|
|
106
|
+
<!-- <fileTypes> -->
|
|
107
|
+
|
|
108
|
+
<!-- Defines one file type. Optional. -->
|
|
109
|
+
<!-- <fileType> -->
|
|
110
|
+
|
|
111
|
+
<!-- The name that the system displays for the registered file type. Required. -->
|
|
112
|
+
<!-- <name></name> -->
|
|
113
|
+
|
|
114
|
+
<!-- The extension to register. Required. -->
|
|
115
|
+
<!-- <extension></extension> -->
|
|
116
|
+
|
|
117
|
+
<!-- The description of the file type. Optional. -->
|
|
118
|
+
<!-- <description></description> -->
|
|
119
|
+
|
|
120
|
+
<!-- The MIME type. Optional. -->
|
|
121
|
+
<!-- <contentType></contentType> -->
|
|
122
|
+
|
|
123
|
+
<!-- The icon to display for the file type. Optional. -->
|
|
124
|
+
<!-- <icon>
|
|
125
|
+
<image16x16></image16x16>
|
|
126
|
+
<image32x32></image32x32>
|
|
127
|
+
<image48x48></image48x48>
|
|
128
|
+
<image128x128></image128x128>
|
|
129
|
+
</icon> -->
|
|
130
|
+
|
|
131
|
+
<!-- </fileType> -->
|
|
132
|
+
<!-- </fileTypes> -->
|
|
133
|
+
|
|
134
|
+
</application>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<mx:<%= application_tag %> xmlns:mx="http://www.adobe.com/2006/mxml"
|
|
3
|
+
xmlns:generated="<%= base_package %>.components.generated.*"
|
|
4
|
+
layout="vertical"
|
|
5
|
+
styleName="plain"
|
|
6
|
+
initialize="init()">
|
|
7
|
+
<mx:Script>
|
|
8
|
+
<![CDATA[
|
|
9
|
+
<% if use_air -%>
|
|
10
|
+
import org.ruboss.services.air.AIRServiceProvider;
|
|
11
|
+
<% end -%>
|
|
12
|
+
import org.ruboss.Ruboss;
|
|
13
|
+
import <%= base_package %>.controllers.<%= command_controller_name %>;
|
|
14
|
+
|
|
15
|
+
private function init():void {
|
|
16
|
+
<% if use_air -%>
|
|
17
|
+
<%= command_controller_name %>.initialize([AIRServiceProvider], AIRServiceProvider.ID, "<%= base_package %>");
|
|
18
|
+
<% else -%>
|
|
19
|
+
<%= command_controller_name %>.initialize();
|
|
20
|
+
<% end -%>
|
|
21
|
+
}
|
|
22
|
+
]]>
|
|
23
|
+
</mx:Script>
|
|
24
|
+
<mx:ApplicationControlBar dock="true" width="100%">
|
|
25
|
+
<mx:LinkBar dataProvider="{mainViewStack}"/>
|
|
26
|
+
</mx:ApplicationControlBar>
|
|
27
|
+
<mx:ViewStack id="mainViewStack" width="100%" height="100%">
|
|
28
|
+
<!-- For a simple demo, put all the components here. -->
|
|
29
|
+
<% for component in component_names -%>
|
|
30
|
+
<generated:<%= component %>/>
|
|
31
|
+
<% end -%>
|
|
32
|
+
</mx:ViewStack>
|
|
33
|
+
</mx:<%= application_tag %>>
|
|
34
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<projectDescription>
|
|
3
|
+
<name><%= flex_project_name %></name>
|
|
4
|
+
<comment></comment>
|
|
5
|
+
<projects>
|
|
6
|
+
</projects>
|
|
7
|
+
<buildSpec>
|
|
8
|
+
<buildCommand>
|
|
9
|
+
<name>com.adobe.flexbuilder.project.flexbuilder</name>
|
|
10
|
+
<arguments>
|
|
11
|
+
</arguments>
|
|
12
|
+
</buildCommand>
|
|
13
|
+
</buildSpec>
|
|
14
|
+
<natures>
|
|
15
|
+
<nature>com.adobe.flexbuilder.project.flexnature</nature>
|
|
16
|
+
<nature>com.adobe.flexbuilder.project.actionscriptnature</nature>
|
|
17
|
+
</natures>
|
|
18
|
+
</projectDescription>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<projectDescription>
|
|
3
|
+
<name><%= flex_project_name %></name>
|
|
4
|
+
<comment></comment>
|
|
5
|
+
<projects>
|
|
6
|
+
</projects>
|
|
7
|
+
<buildSpec>
|
|
8
|
+
<buildCommand>
|
|
9
|
+
<name>com.adobe.flexbuilder.project.flexbuilder</name>
|
|
10
|
+
<arguments>
|
|
11
|
+
</arguments>
|
|
12
|
+
</buildCommand>
|
|
13
|
+
<buildCommand>
|
|
14
|
+
<name>com.adobe.flexbuilder.apollo.apollobuilder</name>
|
|
15
|
+
<arguments>
|
|
16
|
+
</arguments>
|
|
17
|
+
</buildCommand>
|
|
18
|
+
</buildSpec>
|
|
19
|
+
<natures>
|
|
20
|
+
<nature>com.adobe.flexbuilder.apollo.apollonature</nature>
|
|
21
|
+
<nature>com.adobe.flexbuilder.project.flexnature</nature>
|
|
22
|
+
<nature>com.adobe.flexbuilder.project.actionscriptnature</nature>
|
|
23
|
+
</natures>
|
|
24
|
+
</projectDescription>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Ruboss code generation configuration options
|
|
2
|
+
|
|
3
|
+
# By default flex models, commands, controllers and components are genearated into
|
|
4
|
+
# app/flex/<your rails project name> folder. If you'd like to customize the target folder
|
|
5
|
+
# (to say append a "com" package before your rails project name) uncomment the line below
|
|
6
|
+
# base-package must follow the usual flex package notation (a string separated by ".")
|
|
7
|
+
|
|
8
|
+
#base-package: com.pomodo
|
|
9
|
+
|
|
10
|
+
# Main ruboss controller is typically named after your rails project name (camel-cased with a word
|
|
11
|
+
# Controller appended at the end, e.g. if your application is called "pomodo" the flex application
|
|
12
|
+
# controller will be called "PomodoController"). This controller is created in
|
|
13
|
+
# <base-package>.controllers folder. You can customize the name by uncommenting the following line
|
|
14
|
+
# and changing the controller name.
|
|
15
|
+
|
|
16
|
+
#controller-name: PomodoController
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
################################################################################
|
|
2
|
+
# Copyright 2008, Ruboss Technology Corporation.
|
|
3
|
+
#
|
|
4
|
+
# This software is dual-licensed under both the terms of the Ruboss Commercial
|
|
5
|
+
# License v1 (RCL v1) as published by Ruboss Technology Corporation and under
|
|
6
|
+
# the terms of the GNU General Public License v3 (GPL v3) as published by the
|
|
7
|
+
# Free Software Foundation.
|
|
8
|
+
#
|
|
9
|
+
# Both the RCL v1 (rcl-1.0.txt) and the GPL v3 (gpl-3.0.txt) are included in
|
|
10
|
+
# the source code. If you have purchased a commercial license then only the
|
|
11
|
+
# RCL v1 applies; otherwise, only the GPL v3 applies. To learn more or to buy a
|
|
12
|
+
# commercial license, please go to http://ruboss.com.
|
|
13
|
+
################################################################################
|
|
14
|
+
require 'ruboss4ruby/active_record_tasks'
|
|
15
|
+
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/* SWFObject v2.0 <http://code.google.com/p/swfobject/>
|
|
2
|
+
Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis
|
|
3
|
+
This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
|
|
4
|
+
*/
|
|
5
|
+
var swfobject=function(){var Z="undefined",P="object",B="Shockwave Flash",h="ShockwaveFlash.ShockwaveFlash",W="application/x-shockwave-flash",K="SWFObjectExprInst",G=window,g=document,N=navigator,f=[],H=[],Q=null,L=null,T=null,S=false,C=false;var a=function(){var l=typeof g.getElementById!=Z&&typeof g.getElementsByTagName!=Z&&typeof g.createElement!=Z&&typeof g.appendChild!=Z&&typeof g.replaceChild!=Z&&typeof g.removeChild!=Z&&typeof g.cloneNode!=Z,t=[0,0,0],n=null;if(typeof N.plugins!=Z&&typeof N.plugins[B]==P){n=N.plugins[B].description;if(n){n=n.replace(/^.*\s+(\S+\s+\S+$)/,"$1");t[0]=parseInt(n.replace(/^(.*)\..*$/,"$1"),10);t[1]=parseInt(n.replace(/^.*\.(.*)\s.*$/,"$1"),10);t[2]=/r/.test(n)?parseInt(n.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof G.ActiveXObject!=Z){var o=null,s=false;try{o=new ActiveXObject(h+".7")}catch(k){try{o=new ActiveXObject(h+".6");t=[6,0,21];o.AllowScriptAccess="always"}catch(k){if(t[0]==6){s=true}}if(!s){try{o=new ActiveXObject(h)}catch(k){}}}if(!s&&o){try{n=o.GetVariable("$version");if(n){n=n.split(" ")[1].split(",");t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]}}catch(k){}}}}var v=N.userAgent.toLowerCase(),j=N.platform.toLowerCase(),r=/webkit/.test(v)?parseFloat(v.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,i=false,q=j?/win/.test(j):/win/.test(v),m=j?/mac/.test(j):/mac/.test(v);/*@cc_on i=true;@if(@_win32)q=true;@elif(@_mac)m=true;@end@*/return{w3cdom:l,pv:t,webkit:r,ie:i,win:q,mac:m}}();var e=function(){if(!a.w3cdom){return }J(I);if(a.ie&&a.win){try{g.write("<script id=__ie_ondomload defer=true src=//:><\/script>");var i=c("__ie_ondomload");if(i){i.onreadystatechange=function(){if(this.readyState=="complete"){this.parentNode.removeChild(this);V()}}}}catch(j){}}if(a.webkit&&typeof g.readyState!=Z){Q=setInterval(function(){if(/loaded|complete/.test(g.readyState)){V()}},10)}if(typeof g.addEventListener!=Z){g.addEventListener("DOMContentLoaded",V,null)}M(V)}();function V(){if(S){return }if(a.ie&&a.win){var m=Y("span");try{var l=g.getElementsByTagName("body")[0].appendChild(m);l.parentNode.removeChild(l)}catch(n){return }}S=true;if(Q){clearInterval(Q);Q=null}var j=f.length;for(var k=0;k<j;k++){f[k]()}}function J(i){if(S){i()}else{f[f.length]=i}}function M(j){if(typeof G.addEventListener!=Z){G.addEventListener("load",j,false)}else{if(typeof g.addEventListener!=Z){g.addEventListener("load",j,false)}else{if(typeof G.attachEvent!=Z){G.attachEvent("onload",j)}else{if(typeof G.onload=="function"){var i=G.onload;G.onload=function(){i();j()}}else{G.onload=j}}}}}function I(){var l=H.length;for(var j=0;j<l;j++){var m=H[j].id;if(a.pv[0]>0){var k=c(m);if(k){H[j].width=k.getAttribute("width")?k.getAttribute("width"):"0";H[j].height=k.getAttribute("height")?k.getAttribute("height"):"0";if(O(H[j].swfVersion)){if(a.webkit&&a.webkit<312){U(k)}X(m,true)}else{if(H[j].expressInstall&&!C&&O("6.0.65")&&(a.win||a.mac)){D(H[j])}else{d(k)}}}}else{X(m,true)}}}function U(m){var k=m.getElementsByTagName(P)[0];if(k){var p=Y("embed"),r=k.attributes;if(r){var o=r.length;for(var n=0;n<o;n++){if(r[n].nodeName.toLowerCase()=="data"){p.setAttribute("src",r[n].nodeValue)}else{p.setAttribute(r[n].nodeName,r[n].nodeValue)}}}var q=k.childNodes;if(q){var s=q.length;for(var l=0;l<s;l++){if(q[l].nodeType==1&&q[l].nodeName.toLowerCase()=="param"){p.setAttribute(q[l].getAttribute("name"),q[l].getAttribute("value"))}}}m.parentNode.replaceChild(p,m)}}function F(i){if(a.ie&&a.win&&O("8.0.0")){G.attachEvent("onunload",function(){var k=c(i);if(k){for(var j in k){if(typeof k[j]=="function"){k[j]=function(){}}}k.parentNode.removeChild(k)}})}}function D(j){C=true;var o=c(j.id);if(o){if(j.altContentId){var l=c(j.altContentId);if(l){L=l;T=j.altContentId}}else{L=b(o)}if(!(/%$/.test(j.width))&&parseInt(j.width,10)<310){j.width="310"}if(!(/%$/.test(j.height))&&parseInt(j.height,10)<137){j.height="137"}g.title=g.title.slice(0,47)+" - Flash Player Installation";var n=a.ie&&a.win?"ActiveX":"PlugIn",k=g.title,m="MMredirectURL="+G.location+"&MMplayerType="+n+"&MMdoctitle="+k,p=j.id;if(a.ie&&a.win&&o.readyState!=4){var i=Y("div");p+="SWFObjectNew";i.setAttribute("id",p);o.parentNode.insertBefore(i,o);o.style.display="none";G.attachEvent("onload",function(){o.parentNode.removeChild(o)})}R({data:j.expressInstall,id:K,width:j.width,height:j.height},{flashvars:m},p)}}function d(j){if(a.ie&&a.win&&j.readyState!=4){var i=Y("div");j.parentNode.insertBefore(i,j);i.parentNode.replaceChild(b(j),i);j.style.display="none";G.attachEvent("onload",function(){j.parentNode.removeChild(j)})}else{j.parentNode.replaceChild(b(j),j)}}function b(n){var m=Y("div");if(a.win&&a.ie){m.innerHTML=n.innerHTML}else{var k=n.getElementsByTagName(P)[0];if(k){var o=k.childNodes;if(o){var j=o.length;for(var l=0;l<j;l++){if(!(o[l].nodeType==1&&o[l].nodeName.toLowerCase()=="param")&&!(o[l].nodeType==8)){m.appendChild(o[l].cloneNode(true))}}}}}return m}function R(AE,AC,q){var p,t=c(q);if(typeof AE.id==Z){AE.id=q}if(a.ie&&a.win){var AD="";for(var z in AE){if(AE[z]!=Object.prototype[z]){if(z=="data"){AC.movie=AE[z]}else{if(z.toLowerCase()=="styleclass"){AD+=' class="'+AE[z]+'"'}else{if(z!="classid"){AD+=" "+z+'="'+AE[z]+'"'}}}}}var AB="";for(var y in AC){if(AC[y]!=Object.prototype[y]){AB+='<param name="'+y+'" value="'+AC[y]+'" />'}}t.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AD+">"+AB+"</object>";F(AE.id);p=c(AE.id)}else{if(a.webkit&&a.webkit<312){var AA=Y("embed");AA.setAttribute("type",W);for(var x in AE){if(AE[x]!=Object.prototype[x]){if(x=="data"){AA.setAttribute("src",AE[x])}else{if(x.toLowerCase()=="styleclass"){AA.setAttribute("class",AE[x])}else{if(x!="classid"){AA.setAttribute(x,AE[x])}}}}}for(var w in AC){if(AC[w]!=Object.prototype[w]){if(w!="movie"){AA.setAttribute(w,AC[w])}}}t.parentNode.replaceChild(AA,t);p=AA}else{var s=Y(P);s.setAttribute("type",W);for(var v in AE){if(AE[v]!=Object.prototype[v]){if(v.toLowerCase()=="styleclass"){s.setAttribute("class",AE[v])}else{if(v!="classid"){s.setAttribute(v,AE[v])}}}}for(var u in AC){if(AC[u]!=Object.prototype[u]&&u!="movie"){E(s,u,AC[u])}}t.parentNode.replaceChild(s,t);p=s}}return p}function E(k,i,j){var l=Y("param");l.setAttribute("name",i);l.setAttribute("value",j);k.appendChild(l)}function c(i){return g.getElementById(i)}function Y(i){return g.createElement(i)}function O(k){var j=a.pv,i=k.split(".");i[0]=parseInt(i[0],10);i[1]=parseInt(i[1],10);i[2]=parseInt(i[2],10);return(j[0]>i[0]||(j[0]==i[0]&&j[1]>i[1])||(j[0]==i[0]&&j[1]==i[1]&&j[2]>=i[2]))?true:false}function A(m,j){if(a.ie&&a.mac){return }var l=g.getElementsByTagName("head")[0],k=Y("style");k.setAttribute("type","text/css");k.setAttribute("media","screen");if(!(a.ie&&a.win)&&typeof g.createTextNode!=Z){k.appendChild(g.createTextNode(m+" {"+j+"}"))}l.appendChild(k);if(a.ie&&a.win&&typeof g.styleSheets!=Z&&g.styleSheets.length>0){var i=g.styleSheets[g.styleSheets.length-1];if(typeof i.addRule==P){i.addRule(m,j)}}}function X(k,i){var j=i?"visible":"hidden";if(S){c(k).style.visibility=j}else{A("#"+k,"visibility:"+j)}}return{registerObject:function(l,i,k){if(!a.w3cdom||!l||!i){return }var j={};j.id=l;j.swfVersion=i;j.expressInstall=k?k:false;H[H.length]=j;X(l,false)},getObjectById:function(l){var i=null;if(a.w3cdom&&S){var j=c(l);if(j){var k=j.getElementsByTagName(P)[0];if(!k||(k&&typeof j.SetVariable!=Z)){i=j}else{if(typeof k.SetVariable!=Z){i=k}}}}return i},embedSWF:function(n,u,r,t,j,m,k,p,s){if(!a.w3cdom||!n||!u||!r||!t||!j){return }r+="";t+="";if(O(j)){X(u,false);var q=(typeof s==P)?s:{};q.data=n;q.width=r;q.height=t;var o=(typeof p==P)?p:{};if(typeof k==P){for(var l in k){if(k[l]!=Object.prototype[l]){if(typeof o.flashvars!=Z){o.flashvars+="&"+l+"="+k[l]}else{o.flashvars=l+"="+k[l]}}}}J(function(){R(q,o,u);if(q.id==u){X(u,true)}})}else{if(m&&!C&&O("6.0.65")&&(a.win||a.mac)){X(u,false);J(function(){var i={};i.id=i.altContentId=u;i.width=r;i.height=t;i.expressInstall=m;D(i)})}}},getFlashPlayerVersion:function(){return{major:a.pv[0],minor:a.pv[1],release:a.pv[2]}},hasFlashPlayerVersion:O,createSWF:function(k,j,i){if(a.w3cdom&&S){return R(k,j,i)}else{return undefined}},createCSS:function(j,i){if(a.w3cdom){A(j,i)}},addDomLoadEvent:J,addLoadEvent:M,getQueryParamValue:function(m){var l=g.location.search||g.location.hash;if(m==null){return l}if(l){var k=l.substring(1).split("&");for(var j=0;j<k.length;j++){if(k[j].substring(0,k[j].indexOf("="))==m){return k[j].substring((k[j].indexOf("=")+1))}}}return""},expressInstallCallback:function(){if(C&&L){var i=c(K);if(i){i.parentNode.replaceChild(L,i);if(T){X(T,true);if(a.ie&&a.win){L.style.display="block"}}L=null;T=null;C=false}}}}}();
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
Generates/updates the main Flex application controller, typically
|
|
3
|
+
app/flex/<yourappname>/controllers/<YourAppName>Controller.as, e.g.
|
|
4
|
+
app/flex/pomodo/controllers/PomodoController.as
|
|
5
|
+
|
|
6
|
+
It pulls out all available models and commands from respective
|
|
7
|
+
folders and makes sure they'll be pulled into the Flex application
|
|
8
|
+
at runtime. Doesn't require any arguments or options.
|
|
9
|
+
|
|
10
|
+
Examples:
|
|
11
|
+
`./script/generate ruboss_controller`
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
################################################################################
|
|
2
|
+
# Copyright 2008, Ruboss Technology Corporation.
|
|
3
|
+
#
|
|
4
|
+
# This software is dual-licensed under both the terms of the Ruboss Commercial
|
|
5
|
+
# License v1 (RCL v1) as published by Ruboss Technology Corporation and under
|
|
6
|
+
# the terms of the GNU General Public License v3 (GPL v3) as published by the
|
|
7
|
+
# Free Software Foundation.
|
|
8
|
+
#
|
|
9
|
+
# Both the RCL v1 (rcl-1.0.txt) and the GPL v3 (gpl-3.0.txt) are included in
|
|
10
|
+
# the source code. If you have purchased a commercial license then only the
|
|
11
|
+
# RCL v1 applies; otherwise, only the GPL v3 applies. To learn more or to buy a
|
|
12
|
+
# commercial license, please go to http://ruboss.com.
|
|
13
|
+
################################################################################
|
|
14
|
+
require 'ruboss4ruby/configuration'
|
|
15
|
+
|
|
16
|
+
class RubossControllerGenerator < Rails::Generator::Base
|
|
17
|
+
include Ruboss::Configuration
|
|
18
|
+
|
|
19
|
+
attr_reader :project_name,
|
|
20
|
+
:flex_project_name,
|
|
21
|
+
:base_package,
|
|
22
|
+
:base_folder,
|
|
23
|
+
:command_controller_name,
|
|
24
|
+
:model_names,
|
|
25
|
+
:command_names
|
|
26
|
+
|
|
27
|
+
def initialize(runtime_args, runtime_options = {})
|
|
28
|
+
super
|
|
29
|
+
@project_name, @flex_project_name, @command_controller_name, @base_package, @base_folder = extract_names
|
|
30
|
+
|
|
31
|
+
@model_names = list_as_files("app/flex/#{base_folder}/models")
|
|
32
|
+
@command_names = list_as_files("app/flex/#{base_folder}/commands")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def manifest
|
|
36
|
+
record do |m|
|
|
37
|
+
m.template 'controller.as.erb', File.join("app/flex/#{base_folder}/controllers",
|
|
38
|
+
"#{command_controller_name}.as")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
protected
|
|
43
|
+
def banner
|
|
44
|
+
"Usage: #{$0} #{spec.name}"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
package <%= base_package %>.controllers {
|
|
2
|
+
import <%= base_package %>.models.*;
|
|
3
|
+
import <%= base_package %>.commands.*;
|
|
4
|
+
|
|
5
|
+
import org.ruboss.Ruboss;
|
|
6
|
+
import org.ruboss.controllers.RubossCommandsController;
|
|
7
|
+
import org.ruboss.utils.RubossUtils;
|
|
8
|
+
|
|
9
|
+
public class <%= command_controller_name %> extends RubossCommandsController {
|
|
10
|
+
private static var controller:<%= command_controller_name %>;
|
|
11
|
+
|
|
12
|
+
public static var models:Array = [<%= model_names %>]; /* Models */
|
|
13
|
+
|
|
14
|
+
public function <%= command_controller_name %>(enforcer:SingletonEnforcer, extraServices:Array,
|
|
15
|
+
defaultServiceId:int = -1) {
|
|
16
|
+
super([<%= command_names %>] /* Commands */,
|
|
17
|
+
models, extraServices, defaultServiceId);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public static function get instance():<%= command_controller_name %> {
|
|
21
|
+
if (controller == null) initialize();
|
|
22
|
+
return controller;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public static function initialize(extraServices:Array = null, defaultServiceId:int = -1,
|
|
26
|
+
airDatabaseName:String = null):void {
|
|
27
|
+
if (!RubossUtils.isEmpty(airDatabaseName)) Ruboss.airDatabaseName = airDatabaseName;
|
|
28
|
+
controller = new <%= command_controller_name %>(new SingletonEnforcer, extraServices,
|
|
29
|
+
defaultServiceId);
|
|
30
|
+
Ruboss.commands = controller;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
class SingletonEnforcer {}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
Scaffolds an entire resource, from model and migration to controller and
|
|
3
|
+
views, along with a full test suite. The resource is ready to use as a
|
|
4
|
+
starting point for your restful, resource-oriented application.
|
|
5
|
+
|
|
6
|
+
ruboss_scaffold delegates the underlying rails code generation to "scaffold"
|
|
7
|
+
and extends it in a number of ways:
|
|
8
|
+
1. Generates all required Flex code.
|
|
9
|
+
2. You can pass special belongs_to, has_one and has_many attributes
|
|
10
|
+
to generate *all* appropriate relationships. No more manual code
|
|
11
|
+
editing.
|
|
12
|
+
|
|
13
|
+
Pass the name of the model, either CamelCased or under_scored, as the first
|
|
14
|
+
argument, and an optional list of attribute pairs.
|
|
15
|
+
|
|
16
|
+
Attribute pairs are column_name:sql_type arguments specifying the
|
|
17
|
+
model's attributes. Timestamps are added by default, so you don't have to
|
|
18
|
+
specify them by hand as 'created_at:datetime updated_at:datetime'.
|
|
19
|
+
|
|
20
|
+
The syntax for belongs_to, has_one and has_many attributes is as follows:
|
|
21
|
+
belongs_to:<relationship_name> or
|
|
22
|
+
belongs_to:<relationship_name>,<another_relationship>,<and_another>
|
|
23
|
+
|
|
24
|
+
You don't have to think up every attribute up front, but it helps to
|
|
25
|
+
sketch out a few so you can start working with the resource immediately.
|
|
26
|
+
|
|
27
|
+
For example, `scaffold post title:string body:text published:boolean`
|
|
28
|
+
gives you a model with those three attributes, a controller that handles
|
|
29
|
+
the create/show/update/destroy, forms to create and edit your posts, and
|
|
30
|
+
an index that lists them all, as well as a map.resources :posts
|
|
31
|
+
declaration in config/routes.rb.
|
|
32
|
+
|
|
33
|
+
Examples:
|
|
34
|
+
`./script/generate ruboss_scaffold project name:string has_many:tasks`
|
|
35
|
+
`./script/generate ruboss_scaffold task name:string belongs_to:project`
|