flex_scaffold 0.1.0

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.
Files changed (48) hide show
  1. data/CHANGELOG +4 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README +169 -0
  4. data/Rakefile +116 -0
  5. data/TODO +23 -0
  6. data/generators/flex_scaffold/USAGE +16 -0
  7. data/generators/flex_scaffold/flex_scaffold_generator.rb +434 -0
  8. data/generators/flex_scaffold/templates/_form.rhtml +1 -0
  9. data/generators/flex_scaffold/templates/_index.rmxml +210 -0
  10. data/generators/flex_scaffold/templates/_list.rhtml +0 -0
  11. data/generators/flex_scaffold/templates/_list.rmxml +17 -0
  12. data/generators/flex_scaffold_resource/USAGE +36 -0
  13. data/generators/flex_scaffold_resource/flex_scaffold_resource_generator.rb +81 -0
  14. data/generators/flex_scaffold_resource/templates/controller.rb +101 -0
  15. data/generators/flex_scaffold_resource/templates/index.rhtml +3 -0
  16. data/generators/flex_scaffold_resource/templates/layout.rhtml +19 -0
  17. data/init.rb +29 -0
  18. data/install.rb +1 -0
  19. data/lib/action_view_helper.rb +49 -0
  20. data/lib/actionscript_helper.rb +81 -0
  21. data/lib/config.rb +49 -0
  22. data/lib/flex_scaffold_plugin.rb +25 -0
  23. data/lib/flexobject_view_helper.rb +132 -0
  24. data/lib/mtag_helper.rb +98 -0
  25. data/lib/mxml_helper.rb +107 -0
  26. data/lib/rest_scaffolding.rb +137 -0
  27. data/lib/validations.rb +180 -0
  28. data/public/crossdomain.xml +6 -0
  29. data/public/history.htm +21 -0
  30. data/public/history.swf +0 -0
  31. data/public/images/add.gif +0 -0
  32. data/public/images/arrow_down.gif +0 -0
  33. data/public/images/arrow_up.gif +0 -0
  34. data/public/images/create.gif +0 -0
  35. data/public/images/delete.gif +0 -0
  36. data/public/images/indicator-small.gif +0 -0
  37. data/public/images/indicator.gif +0 -0
  38. data/public/images/read.gif +0 -0
  39. data/public/images/search.gif +0 -0
  40. data/public/images/update.gif +0 -0
  41. data/public/javascripts/flashobject.js +168 -0
  42. data/public/javascripts/history.js +48 -0
  43. data/public/playerProductInstall.swf +0 -0
  44. data/public/stylesheets/default.css +28 -0
  45. data/tasks/compile_swf.rake +100 -0
  46. data/tasks/flex_scaffold.rake +38 -0
  47. data/uninstall.rb +1 -0
  48. metadata +125 -0
@@ -0,0 +1,168 @@
1
+ /**
2
+ * FlashObject v1.2.3: Flash detection and embed - http://blog.deconcept.com/flashobject/
3
+ *
4
+ * FlashObject is (c) 2005 Geoff Stearns and is released under the MIT License:
5
+ * http://www.opensource.org/licenses/mit-license.php
6
+ *
7
+ */
8
+ if(typeof com == "undefined") var com = new Object();
9
+ if(typeof com.deconcept == "undefined") com.deconcept = new Object();
10
+ if(typeof com.deconcept.util == "undefined") com.deconcept.util = new Object();
11
+ if(typeof com.deconcept.FlashObjectUtil == "undefined") com.deconcept.FlashObjectUtil = new Object();
12
+ com.deconcept.FlashObject = function(swf, id, w, h, ver, c, useExpressInstall, quality, redirectUrl, detectKey){
13
+ this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
14
+ this.skipDetect = com.deconcept.util.getRequestParameter(this.DETECT_KEY);
15
+ this.params = new Object();
16
+ this.variables = new Object();
17
+ this.attributes = new Array();
18
+
19
+ if(swf) this.setAttribute('swf', swf);
20
+ if(id) this.setAttribute('id', id);
21
+ if(w) this.setAttribute('width', w);
22
+ if(h) this.setAttribute('height', h);
23
+ if(ver) this.setAttribute('version', new com.deconcept.PlayerVersion(ver.toString().split(".")));
24
+ if(c) this.addParam('bgcolor', c);
25
+ var q = quality ? quality : 'high';
26
+ this.addParam('quality', q);
27
+ this.setAttribute('redirectUrl', '');
28
+ if(redirectUrl) this.setAttribute('redirectUrl', redirectUrl);
29
+ if(useExpressInstall) {
30
+ // check to see if we need to do an express install
31
+ var expressInstallReqVer = new com.deconcept.PlayerVersion([6,0,65]);
32
+ var installedVer = com.deconcept.FlashObjectUtil.getPlayerVersion();
33
+ if (installedVer.versionIsValid(expressInstallReqVer) && !installedVer.versionIsValid(this.getAttribute('version'))) {
34
+ this.setAttribute('doExpressInstall', true);
35
+ }
36
+ } else {
37
+ this.setAttribute('doExpressInstall', false);
38
+ }
39
+ }
40
+ com.deconcept.FlashObject.prototype.setAttribute = function(name, value){
41
+ this.attributes[name] = value;
42
+ }
43
+ com.deconcept.FlashObject.prototype.getAttribute = function(name){
44
+ return this.attributes[name];
45
+ }
46
+ com.deconcept.FlashObject.prototype.getAttributes = function(){
47
+ return this.attributes;
48
+ }
49
+ com.deconcept.FlashObject.prototype.addParam = function(name, value){
50
+ this.params[name] = value;
51
+ }
52
+ com.deconcept.FlashObject.prototype.getParams = function(){
53
+ return this.params;
54
+ }
55
+ com.deconcept.FlashObject.prototype.getParam = function(name){
56
+ return this.params[name];
57
+ }
58
+ com.deconcept.FlashObject.prototype.addVariable = function(name, value){
59
+ this.variables[name] = value;
60
+ }
61
+ com.deconcept.FlashObject.prototype.getVariable = function(name){
62
+ return this.variables[name];
63
+ }
64
+ com.deconcept.FlashObject.prototype.getVariables = function(){
65
+ return this.variables;
66
+ }
67
+ com.deconcept.FlashObject.prototype.getParamTags = function(){
68
+ var paramTags = ""; var key; var params = this.getParams();
69
+ for(key in params) {
70
+ paramTags += '<param name="' + key + '" value="' + params[key] + '" />';
71
+ }
72
+ return paramTags;
73
+ }
74
+ com.deconcept.FlashObject.prototype.getVariablePairs = function(){
75
+ var variablePairs = new Array();
76
+ var key;
77
+ var variables = this.getVariables();
78
+ for(key in variables){
79
+ variablePairs.push(key +"="+ variables[key]);
80
+ }
81
+ return variablePairs;
82
+ }
83
+ com.deconcept.FlashObject.prototype.getHTML = function() {
84
+ var flashHTML = "";
85
+ if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
86
+ if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "PlugIn"); }
87
+ flashHTML += '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" id="'+ this.getAttribute('id') + '" name="'+ this.getAttribute('id') +'"';
88
+ var params = this.getParams();
89
+ for(var key in params){ flashHTML += ' '+ key +'="'+ params[key] +'"'; }
90
+ pairs = this.getVariablePairs().join("&");
91
+ if (pairs.length > 0){ flashHTML += ' flashvars="'+ pairs +'"'; }
92
+ flashHTML += '></embed>';
93
+ } else { // PC IE
94
+ if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "ActiveX"); }
95
+ flashHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" id="'+ this.getAttribute('id') +'">';
96
+ flashHTML += '<param name="movie" value="' + this.getAttribute('swf') + '" />';
97
+ var tags = this.getParamTags();
98
+ if(tags.length > 0){ flashHTML += tags; }
99
+ var pairs = this.getVariablePairs().join("&");
100
+ if(pairs.length > 0){ flashHTML += '<param name="flashvars" value="'+ pairs +'" />'; }
101
+ flashHTML += '</object>';
102
+ }
103
+ return flashHTML;
104
+ }
105
+ com.deconcept.FlashObject.prototype.write = function(elementId){
106
+ if(this.skipDetect || this.getAttribute('doExpressInstall') || com.deconcept.FlashObjectUtil.getPlayerVersion().versionIsValid(this.getAttribute('version'))){
107
+ if(document.getElementById){
108
+ if (this.getAttribute('doExpressInstall')) {
109
+ this.addVariable("MMredirectURL", escape(window.location));
110
+ document.title = document.title.slice(0, 47) + " - Flash Player Installation";
111
+ this.addVariable("MMdoctitle", document.title);
112
+ }
113
+ document.getElementById(elementId).innerHTML = this.getHTML();
114
+ }
115
+ }else{
116
+ if(this.getAttribute('redirectUrl') != "") {
117
+ document.location.replace(this.getAttribute('redirectUrl'));
118
+ }
119
+ }
120
+ }
121
+ /* ---- detection functions ---- */
122
+ com.deconcept.FlashObjectUtil.getPlayerVersion = function(){
123
+ var PlayerVersion = new com.deconcept.PlayerVersion(0,0,0);
124
+ if(navigator.plugins && navigator.mimeTypes.length){
125
+ var x = navigator.plugins["Shockwave Flash"];
126
+ if(x && x.description) {
127
+ PlayerVersion = new com.deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
128
+ }
129
+ }else if (window.ActiveXObject){
130
+ try {
131
+ var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
132
+ PlayerVersion = new com.deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
133
+ } catch (e) {}
134
+ }
135
+ return PlayerVersion;
136
+ }
137
+ com.deconcept.PlayerVersion = function(arrVersion){
138
+ this.major = parseInt(arrVersion[0]) || 0;
139
+ this.minor = parseInt(arrVersion[1]) || 0;
140
+ this.rev = parseInt(arrVersion[2]) || 0;
141
+ }
142
+ com.deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
143
+ if(this.major < fv.major) return false;
144
+ if(this.major > fv.major) return true;
145
+ if(this.minor < fv.minor) return false;
146
+ if(this.minor > fv.minor) return true;
147
+ if(this.rev < fv.rev) return false;
148
+ return true;
149
+ }
150
+ /* ---- get value of query string param ---- */
151
+ com.deconcept.util.getRequestParameter = function(param){
152
+ var q = document.location.search || document.location.href.hash;
153
+ if(q){
154
+ var startIndex = q.indexOf(param +"=");
155
+ var endIndex = (q.indexOf("&", startIndex) > -1) ? q.indexOf("&", startIndex) : q.length;
156
+ if (q.length > 1 && startIndex > -1) {
157
+ return q.substring(q.indexOf("=", startIndex)+1, endIndex);
158
+ }
159
+ }
160
+ return "";
161
+ }
162
+
163
+ /* add Array.push if needed (ie5) */
164
+ if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}
165
+
166
+ /* add some aliases for ease of use / backwards compatibility */
167
+ var getQueryParamValue = com.deconcept.util.getRequestParameter;
168
+ var FlashObject = com.deconcept.FlashObject;
@@ -0,0 +1,48 @@
1
+ // $Revision: 1.49 $
2
+ // Vars
3
+ Vars = function(qStr) {
4
+ this.numVars = 0;
5
+ if(qStr != null) {
6
+ var nameValue, name;
7
+ var pairs = qStr.split('&');
8
+ var pairLen = pairs.length;
9
+ for(var i = 0; i < pairLen; i++) {
10
+ var pair = pairs[i];
11
+ if( (pair.indexOf('=')!= -1) && (pair.length > 3) ) {
12
+ var nameValue = pair.split('=');
13
+ var name = nameValue[0];
14
+ var value = nameValue[1];
15
+ if(this[name] == null && name.length > 0 && value.length > 0) {
16
+ this[name] = value;
17
+ this.numVars++;
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
23
+ Vars.prototype.toString = function(pre) {
24
+ var result = '';
25
+ if(pre == null) { pre = ''; }
26
+ for(var i in this) {
27
+ if(this[i] != null && typeof(this[i]) != 'object' && typeof(this[i]) != 'function' && i != 'numVars') {
28
+ result += pre + i + '=' + this[i] + '&';
29
+ }
30
+ }
31
+ if(result.length > 0) result = result.substr(0, result.length-1);
32
+ return result;
33
+ }
34
+ function getSearch(wRef) {
35
+ var searchStr = '';
36
+ if(wRef.location.search.length > 1) {
37
+ searchStr = new String(wRef.location.search);
38
+ searchStr = searchStr.substring(1, searchStr.length);
39
+ }
40
+ return searchStr;
41
+ }
42
+ var lc_id = Math.floor(Math.random() * 100000).toString(16);
43
+ if (this != top)
44
+ {
45
+ top.Vars = Vars;
46
+ top.getSearch = getSearch;
47
+ top.lc_id = lc_id;
48
+ }
Binary file
@@ -0,0 +1,28 @@
1
+
2
+
3
+ Application {
4
+ themeColor:#808080;
5
+ color: #000000;
6
+ backgroundColor: #808080;
7
+ }
8
+
9
+ Panel {
10
+ cornerRadius: 9;
11
+ shadowDistance: 2;
12
+ headerColors: #ffffff, #cccccc;
13
+ footerColors: #e7e7e7, #c7c7c7;
14
+ }
15
+
16
+ DataGrid {
17
+ rollOverColor: #f5f5f5;
18
+ selectionColor: #808080;
19
+ }
20
+
21
+ TextInput {
22
+ backgroundAlpha: 1;
23
+ }
24
+
25
+ Button {
26
+ cornerRadius: 5;
27
+ }
28
+
@@ -0,0 +1,100 @@
1
+ # Rake tasks to make buiding of flex apps easier
2
+ #
3
+ # Author:: toddb
4
+ # Copyright:: Copyright (c) 2007. All rights reserved.
5
+ # License:: MIT License.
6
+ #
7
+
8
+ namespace :flex do
9
+
10
+ plugin_name = "flex_scaffold"
11
+ plural_name = ENV['mxml'] || ''
12
+ partial = "_"
13
+
14
+ flex_home = ENV['flex'] ||"C:/FLEX_SDK_2"
15
+ flex_lib = "#{flex_home}/lib"
16
+ frameworks = "#{flex_home}/frameworks"
17
+
18
+ mxml = File.join(RAILS_ROOT, '/app/flex')
19
+ bin = File.join(RAILS_ROOT, '/public/swfs', plugin_name)
20
+
21
+ flex_home = ENV['flex'] ||"C:/FLEX_SDK_2"
22
+ flex_lib = "#{flex_home}/lib"
23
+ frameworks = "#{flex_home}/frameworks"
24
+
25
+ desc "Compile only the mxml file based on the model"
26
+ task :default => :compile
27
+
28
+ desc "Compile the mxml file(s) to swf and copy to public folder and then cleanup."
29
+ task :app => ['build:install', :compile, 'src:clobber', 'build:clobber']
30
+
31
+ desc "Clean up all the compiled and build (swf) files"
32
+ task :clobber => ['src:clobber', 'bin:clobber', 'build:clobber']
33
+
34
+ desc "Compile only the mxml file based on the model"
35
+ task :compile => ['src:compile', 'bin:dist']
36
+
37
+ namespace :src do
38
+ # if you are using this task, you will first need your build files available
39
+ # rake build:install mxml=contacts
40
+ task :compile => ['build:args', :environment] do
41
+ raise("No mxml files have been selected include 'mxml=contacts' eg rake flex:compile mxml=contacts") unless !plural_name.empty?
42
+ target = "#{mxml}/#{plural_name}/#{partial}#{plural_name}.mxml"
43
+ cmd = "mxmlc.exe"
44
+ unless RUBY_PLATFORM =~ /mswin32/
45
+ cmd = "java -jar #{flex_lib}/mxmlc.jar -load-config #{frameworks}/flex-config.xml -compiler.optimize -file-specs"
46
+ end
47
+ result = system("#{cmd} #{target}")
48
+ raise("There has been an error with compilation msg: #{$?}") unless result
49
+ puts 'Compiling ...'
50
+ puts "Done: /app/flex/#{plural_name}/#{partial}#{plural_name}.mxml"
51
+ puts ''
52
+ end
53
+
54
+ task :clobber => :environment do
55
+ FileUtils.rm_r(Dir.glob(File.join(mxml, plural_name, '*.swf'))) unless !File.exist?(mxml)
56
+ end
57
+ end
58
+
59
+ namespace :bin do
60
+ task :clobber => :environment do
61
+ FileUtils.rm_r(Dir.glob(bin+'/*.swf')) unless !File.exist?(bin)
62
+ end
63
+
64
+ task :dist => :environment do
65
+ FileUtils.mkdir(bin) unless File.exist?(bin)
66
+ FileUtils.cp(Dir.glob(File.join(mxml, plural_name, '*.swf')), bin)
67
+ end
68
+ end
69
+
70
+ namespace :build do
71
+
72
+ task :default => :install
73
+
74
+ plugin_dir = File.join(File.dirname(__FILE__), "..")
75
+
76
+ build_dir = File.join(RAILS_ROOT, 'app/flex', plural_name)
77
+ build_folders = %w[stylesheets images]
78
+
79
+ task :clobber => [:args, :environment] do
80
+ build_folders.each do |folder|
81
+ scaffold_assets = File.join(build_dir, folder)
82
+ puts "#{scaffold_assets}"
83
+ FileUtils.remove_dir(scaffold_assets, {:force => true}) unless !File.exist?(scaffold_assets)
84
+ end
85
+ end
86
+
87
+ task :install => [:args, :environment] do
88
+ build_folders.each do |folder|
89
+ plugin_assets = File.join(File.dirname(__FILE__), '..', 'public', folder)
90
+ dest = File.join(build_dir, folder, plugin_name)
91
+ FileUtils.mkdir_p(dest) unless File.exist?(dest)
92
+ FileUtils.cp(Dir.glob(File.join(plugin_assets, '*.*')), dest)
93
+ end
94
+ end
95
+
96
+ task :args do raise("No mxml files have been selected include 'mxml=contacts' eg rake flex:compile mxml=contacts") unless !plural_name.empty? end
97
+
98
+ end
99
+
100
+ end
@@ -0,0 +1,38 @@
1
+ # Rake tasks to make buiding of flex apps easier
2
+ #
3
+ # Author:: toddb
4
+ # Copyright:: Copyright (c) 2007. All rights reserved.
5
+ # License:: MIT License.
6
+ #
7
+
8
+ namespace :flex do
9
+
10
+ namespace :public do
11
+
12
+ plugin_name = "flex_scaffold"
13
+ plugin_dir = File.join(File.dirname(__FILE__), "..")
14
+
15
+ public = %w[/ javascripts stylesheets images]
16
+ public_dir = File.join(RAILS_ROOT, 'public')
17
+
18
+ desc "Uninstall all the public assets for the flex_scaffold"
19
+ task :clobber => :environment do
20
+ public.each do |folder|
21
+ flex_plugin = File.join(RAILS_ROOT, 'public', folder, plugin_name)
22
+ FileUtils.rm_r(Dir.glob(flex_plugin)) unless !File.exist?(flex_plugin)
23
+ end
24
+ end
25
+
26
+ desc "Install all the public assets for the flex_scaffold"
27
+ task :install => :environment do
28
+ public.each do |folder|
29
+ flex_plugin = File.join(plugin_dir, 'public', folder)
30
+ dest = File.join(public_dir, folder, plugin_name)
31
+ FileUtils.mkdir(dest) unless File.exist?(dest)
32
+ FileUtils.cp(Dir.glob(File.join(flex_plugin, '*.*')), dest)
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ end
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ #Rake::Task['flex:public:clobber'].invoke
metadata ADDED
@@ -0,0 +1,125 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.0
3
+ specification_version: 1
4
+ name: flex_scaffold
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2007-04-04 00:00:00 +12:00
8
+ summary: Plugin for scaffolding a Flex view within Rails on REST services.
9
+ require_paths:
10
+ - lib
11
+ email: todd@8wireunlimited.com
12
+ homepage: http://flexible-rails.rubyforge.org
13
+ rubyforge_project: flexible-rails
14
+ description: Flexible Rails Scaffolding is a plugin to scaffold REST controllers and a flex view for models. Use generators to create the code and rake to compile. Flexible Rails generates .mxml and .as code so that it can be edited by both Rails and Flex coders.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - toddb
31
+ files:
32
+ - CHANGELOG
33
+ - generators
34
+ - init.rb
35
+ - install.rb
36
+ - lib
37
+ - MIT-LICENSE
38
+ - pkg
39
+ - public
40
+ - Rakefile
41
+ - rdoc
42
+ - README
43
+ - tasks
44
+ - themes34
45
+ - TODO
46
+ - uninstall.rb
47
+ - tasks/compile_swf.rake
48
+ - tasks/flex_scaffold.rake
49
+ - public/crossdomain.xml
50
+ - public/history.htm
51
+ - public/history.swf
52
+ - public/images
53
+ - public/javascripts
54
+ - public/playerProductInstall.swf
55
+ - public/stylesheets
56
+ - public/images/add.gif
57
+ - public/images/arrow_down.gif
58
+ - public/images/arrow_up.gif
59
+ - public/images/create.gif
60
+ - public/images/delete.gif
61
+ - public/images/indicator-small.gif
62
+ - public/images/indicator.gif
63
+ - public/images/read.gif
64
+ - public/images/search.gif
65
+ - public/images/update.gif
66
+ - public/javascripts/flashobject.js
67
+ - public/javascripts/history.js
68
+ - public/stylesheets/default.css
69
+ - generators/flex_scaffold
70
+ - generators/flex_scaffold_resource
71
+ - generators/flex_scaffold/flex_scaffold_generator.rb
72
+ - generators/flex_scaffold/templates
73
+ - generators/flex_scaffold/USAGE
74
+ - generators/flex_scaffold/templates/default
75
+ - generators/flex_scaffold/templates/_form.rhtml
76
+ - generators/flex_scaffold/templates/_index.rmxml
77
+ - generators/flex_scaffold/templates/_list.rhtml
78
+ - generators/flex_scaffold/templates/_list.rmxml
79
+ - generators/flex_scaffold_resource/flex_scaffold_resource_generator.rb
80
+ - generators/flex_scaffold_resource/templates
81
+ - generators/flex_scaffold_resource/USAGE
82
+ - generators/flex_scaffold_resource/templates/controller.rb
83
+ - generators/flex_scaffold_resource/templates/index.rhtml
84
+ - generators/flex_scaffold_resource/templates/layout.rhtml
85
+ - lib/actionscript_helper.rb
86
+ - lib/action_view_helper.rb
87
+ - lib/config.rb
88
+ - lib/flexobject_view_helper.rb
89
+ - lib/flex_scaffold_plugin.rb
90
+ - lib/mtag_helper.rb
91
+ - lib/mxml_helper.rb
92
+ - lib/rest_scaffolding.rb
93
+ - lib/validations.rb
94
+ test_files: []
95
+
96
+ rdoc_options:
97
+ - --exclude
98
+ - .
99
+ extra_rdoc_files: []
100
+
101
+ executables: []
102
+
103
+ extensions: []
104
+
105
+ requirements: []
106
+
107
+ dependencies:
108
+ - !ruby/object:Gem::Dependency
109
+ name: rake
110
+ version_requirement:
111
+ version_requirements: !ruby/object:Gem::Version::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 0.7.2
116
+ version:
117
+ - !ruby/object:Gem::Dependency
118
+ name: rails
119
+ version_requirement:
120
+ version_requirements: !ruby/object:Gem::Version::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.2.0
125
+ version: