restfulx 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -1
- data/Rakefile +3 -1
- data/VERSION.yml +1 -1
- data/app_generators/rx_app/rx_app_generator.rb +2 -2
- data/app_generators/rx_app/templates/actionscript.properties +1 -1
- data/app_generators/rx_app/templates/actionscriptair.properties +1 -1
- data/app_generators/rx_app/templates/mainapp-config.xml +1 -0
- data/app_generators/rx_app/templates/mainapp.mxml +1 -1
- data/app_generators/rx_app/templates/restfulx.yml +26 -5
- data/lib/restfulx.rb +1 -1
- data/lib/restfulx/active_foo.rb +5 -2
- data/lib/restfulx/active_record_uuid_helper.rb +1 -1
- data/lib/restfulx/configuration.rb +15 -4
- data/lib/restfulx/rails/schema_to_yaml.rb +0 -11
- data/lib/restfulx/rails/schema_to_yaml/settings/core.rb +4 -1
- data/lib/restfulx/rails/swf_helper.rb +7 -3
- data/lib/restfulx/tasks.rb +0 -1
- data/rails_generators/rx_config/rx_config_generator.rb +16 -7
- data/rails_generators/rx_config/templates/actionscript.properties +1 -1
- data/rails_generators/rx_config/templates/actionscriptair.properties +1 -1
- data/rails_generators/rx_config/templates/mainapp-config.xml +1 -0
- data/rails_generators/rx_config/templates/restfulx.erb +45 -8
- data/rails_generators/rx_config/templates/restfulx.yml +4 -4
- data/rails_generators/rx_config/templates/session_store_flash.erb +1 -0
- data/rails_generators/rx_main_app/rx_main_app_generator.rb +2 -2
- data/rails_generators/rx_main_app/templates/mainapp.mxml +1 -1
- data/rails_generators/rx_scaffold/rx_scaffold_generator.rb +15 -6
- data/rails_generators/rx_scaffold/templates/controllers/resource_controller.rb.erb +2 -2
- data/rails_generators/rx_scaffold/templates/functional_test.rb +45 -0
- data/rails_generators/rx_scaffold/templates/helper_test.rb +4 -0
- data/rails_generators/rx_scaffold/templates/layouts/default.erb +7 -5
- data/rails_generators/rx_scaffold/templates/migration.rb.erb +4 -4
- data/rxgen_generators/rx_config/rx_config_generator.rb +2 -0
- data/rxgen_generators/rx_controller/templates/assist.py +1 -1
- data/rxgen_generators/rx_main_app/rx_main_app_generator.rb +2 -2
- data/rxgen_generators/rx_main_app/templates/mainapp.mxml +1 -1
- data/rxgen_generators/rx_scaffold/rx_scaffold_generator.rb +56 -9
- data/rxgen_generators/rx_scaffold/templates/{component.mxml.erb → layouts/default.erb} +56 -10
- data/rxgen_generators/rx_scaffold/templates/model.as.erb +33 -2
- data/test/rails/controllers/{application.rb → application_controller.rb} +0 -0
- data/test/rails/helpers/functional_test_helper.rb +1 -1
- data/test/rails/helpers/test_helper.rb +1 -8
- data/test/rails/helpers/unit_test_helper.rb +2 -3
- data/test/rails/test_active_foo.rb +1 -1
- data/test/rails/test_rails_integration_functional.rb +1 -1
- data/test/rails/test_to_fxml.rb +1 -1
- data/test/rails/test_to_json.rb +1 -1
- metadata +59 -73
data/README.rdoc
CHANGED
@@ -39,7 +39,7 @@ For details on how to get started with the RestfulX framework refer to:
|
|
39
39
|
|
40
40
|
Report bugs or track framework development progress:
|
41
41
|
|
42
|
-
http://
|
42
|
+
http://github.com/dima/restfulx_framework/issues
|
43
43
|
|
44
44
|
Get involved with the community:
|
45
45
|
|
data/Rakefile
CHANGED
@@ -10,11 +10,13 @@ begin
|
|
10
10
|
gem.rubyforge_project = "restfulx"
|
11
11
|
gem.authors = ["Dima Berastau"]
|
12
12
|
gem.files = FileList["[A-Z]*", "{bin,app_generators,rails_generators,rxgen_generators,lib,test,spec,tasks}/**/*"]
|
13
|
+
gem.files.exclude 'test/**/*.log', 'test/**/*.sqlite3'
|
14
|
+
gem.test_files.exclude 'test/**/*.log', 'test/**/*.sqlite3'
|
13
15
|
gem.add_dependency('rubigen', '>= 1.5.0')
|
14
16
|
gem.add_dependency('activesupport', '>=2.0.0')
|
15
17
|
end
|
16
18
|
rescue LoadError
|
17
|
-
puts "Jeweler not available. Install it with: sudo gem install
|
19
|
+
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
18
20
|
end
|
19
21
|
|
20
22
|
require 'rake/rdoctask'
|
data/VERSION.yml
CHANGED
@@ -79,11 +79,11 @@ class RxAppGenerator < RubiGen::Base
|
|
79
79
|
m.template 'index.html.erb', 'public/index.html'
|
80
80
|
end
|
81
81
|
|
82
|
-
%w(
|
82
|
+
%w(views controllers commands models events helpers).each do |dir|
|
83
83
|
m.directory "#{flex_root}/#{base_folder}/#{dir}"
|
84
84
|
end
|
85
85
|
|
86
|
-
m.directory "#{flex_root}/#{base_folder}/
|
86
|
+
m.directory "#{flex_root}/#{base_folder}/views/generated"
|
87
87
|
|
88
88
|
m.template 'project-textmate.erb', "#{project_name}.tmproj"
|
89
89
|
m.template 'mainapp.mxml', File.join("#{flex_root}", "#{flex_project_name}.mxml")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<actionScriptProperties mainApplicationPath="<%= flex_project_name %>.mxml" version="3">
|
3
|
-
<compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="public/bin" rootURL="http://localhost:3000/bin" sourceFolderPath="<%= flex_root %>" strict="true" useApolloConfig="false" verifyDigests="true" warn="true">
|
3
|
+
<compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored,Nested" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="public/bin" rootURL="http://localhost:3000/bin" sourceFolderPath="<%= flex_root %>" strict="true" useApolloConfig="false" verifyDigests="true" warn="true">
|
4
4
|
<compilerSourcePath/>
|
5
5
|
<libraryPath defaultLinkType="1">
|
6
6
|
<libraryPathEntry kind="4" path=""/>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<actionScriptProperties mainApplicationPath="<%= flex_project_name %>.mxml" version="3">
|
3
|
-
<compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="bin-debug" sourceFolderPath="<%= flex_root %>" strict="true" useApolloConfig="true" verifyDigests="true" warn="true">
|
3
|
+
<compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored,Nested" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="bin-debug" sourceFolderPath="<%= flex_root %>" strict="true" useApolloConfig="true" verifyDigests="true" warn="true">
|
4
4
|
<compilerSourcePath/>
|
5
5
|
<libraryPath defaultLinkType="1">
|
6
6
|
<libraryPathEntry kind="4" path=""/>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
2
2
|
<mx:<%= application_tag %> xmlns:mx="http://www.adobe.com/2006/mxml"
|
3
|
-
xmlns:generated="<%= base_package %>.
|
3
|
+
xmlns:generated="<%= base_package %>.views.generated.*"
|
4
4
|
paddingBottom="8" paddingLeft="8" paddingRight="8" paddingTop="8"
|
5
5
|
layout="horizontal" styleName="plain" initialize="init()">
|
6
6
|
<mx:Script>
|
@@ -2,24 +2,45 @@
|
|
2
2
|
|
3
3
|
# This option controls what the main Flex application file will be called.
|
4
4
|
# By default it will be equal to the name of your rails project camelized
|
5
|
-
|
5
|
+
project_name: <%= project_name %>
|
6
6
|
|
7
7
|
# This options determines what the root folder for generated Flex code is.
|
8
8
|
# By default 'app/flex'
|
9
|
-
|
9
|
+
flex_root: <%= flex_root %>
|
10
10
|
|
11
11
|
# By default flex models, commands, controllers and components are genearated into
|
12
12
|
# <flex-root>/<your rails project name> folder. If you'd like to customize the target folder
|
13
13
|
# (to say append a "com" package before your rails project name) uncomment the line below
|
14
14
|
# base-package must follow the usual flex package notation (a string separated by ".")
|
15
|
-
|
15
|
+
base_package: <%= base_package %>
|
16
16
|
|
17
17
|
# Main RestfulX controller is typically named AppicationController. This controller is created in
|
18
18
|
# <base-package>.controllers folder. You can customize the name by uncommenting the following line
|
19
19
|
# and changing the controller name.
|
20
|
-
|
20
|
+
controller_name: <%= command_controller_name %>
|
21
21
|
|
22
22
|
# If you are using Rails on the back-end and Adobe AIR as the client you can generate Rails/Flex/AIR
|
23
23
|
# code to take advantage of synchronization (online/offline) support in RestfulX by changing the following
|
24
24
|
# option to true. By default distribution is disabled.
|
25
|
-
distributed: <%= distributed %>
|
25
|
+
distributed: <%= distributed %>
|
26
|
+
|
27
|
+
# Choose the layout to use for generated Flex view components
|
28
|
+
layouts:
|
29
|
+
default: 'default'
|
30
|
+
|
31
|
+
# The following special model.yml fields are supported.
|
32
|
+
#
|
33
|
+
# For example:
|
34
|
+
# attachment_field: [avatar]
|
35
|
+
# * arg takes Paperclip field name, or takes [uploaded_data] for Attachment_Fu
|
36
|
+
# belongs_to: [account, profile]
|
37
|
+
# has_many: [announcements, files, folders, users]
|
38
|
+
# has_many_through: [permissions, roles]
|
39
|
+
# * has_many :roles, :through => :permissions
|
40
|
+
# has_one: [suitcase]
|
41
|
+
# polymorphic: [commentable]
|
42
|
+
# tree_model: [parent]
|
43
|
+
# layout: [default]
|
44
|
+
# * default template is the only current theme, with more coming soon
|
45
|
+
# ignored_fields: [children_count, ancestors_count, descendants_count, position]
|
46
|
+
# * specify fields you don't want generated for your template
|
data/lib/restfulx.rb
CHANGED
data/lib/restfulx/active_foo.rb
CHANGED
@@ -88,6 +88,9 @@ module ActiveSupport
|
|
88
88
|
options[:indent] ||= 2
|
89
89
|
options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
|
90
90
|
options.merge!(:dasherize => false)
|
91
|
+
|
92
|
+
options[:attributes] ||= {}
|
93
|
+
options[:attributes].merge!(:type => "array")
|
91
94
|
|
92
95
|
root = options.delete(:root).to_s
|
93
96
|
children = options.delete(:children)
|
@@ -102,9 +105,9 @@ module ActiveSupport
|
|
102
105
|
|
103
106
|
xml = options[:builder]
|
104
107
|
if empty?
|
105
|
-
xml.tag!(root, options[:
|
108
|
+
xml.tag!(root, options[:attributes])
|
106
109
|
else
|
107
|
-
xml.tag!(root, options[:
|
110
|
+
xml.tag!(root, options[:attributes]) {
|
108
111
|
yield xml if block_given?
|
109
112
|
each { |e| e.to_fxml(opts.merge!({ :skip_instruct => true })) }
|
110
113
|
}
|
@@ -1,6 +1,15 @@
|
|
1
1
|
# Interestingly enough there's no way to *just* upper-case or down-case first letter of a given
|
2
2
|
# string. Ruby's own +capitalize+ actually downcases all the rest of the characters in the string
|
3
3
|
# We patch the class to add our own implementation.
|
4
|
+
require "yaml"
|
5
|
+
require "erb"
|
6
|
+
require File.dirname(__FILE__) + "/rails/schema_to_yaml/settings/config"
|
7
|
+
require File.dirname(__FILE__) + "/rails/schema_to_yaml/settings/core"
|
8
|
+
|
9
|
+
Dir[File.dirname(__FILE__) + "/rails/schema_to_yaml/extensions/*.rb"].each do |f|
|
10
|
+
require f
|
11
|
+
end
|
12
|
+
|
4
13
|
class String
|
5
14
|
# Upper-case first character of a string leave the rest of the string intact
|
6
15
|
def ucfirst
|
@@ -20,6 +29,8 @@ module RestfulX
|
|
20
29
|
module Configuration
|
21
30
|
# We try to figure out the application root using a number of possible options
|
22
31
|
APP_ROOT = defined?(RAILS_ROOT) ? RAILS_ROOT : defined?(Merb) ? Merb.root : File.expand_path(".")
|
32
|
+
|
33
|
+
RxSettings = SchemaToYaml::Settings::Core
|
23
34
|
|
24
35
|
# Extract project, package, controller name, etc from the environment. This will respect
|
25
36
|
# config/restfulx.yml if it exists, you can override all of the defaults there.
|
@@ -35,12 +46,12 @@ module RestfulX
|
|
35
46
|
# give a chance to override the settings via restfulx.yml
|
36
47
|
begin
|
37
48
|
config = YAML.load(File.open("#{APP_ROOT}/config/restfulx.yml"))
|
38
|
-
base_package = config['
|
49
|
+
base_package = config['base_package'] || flex_project_name.downcase
|
39
50
|
base_folder = base_package.gsub('.', '/')
|
40
|
-
project_name = config['
|
51
|
+
project_name = config['project_name'].downcase.gsub(/\W/, '') || project_name
|
41
52
|
flex_project_name = project_name.camelize
|
42
|
-
controller_name = config['
|
43
|
-
flex_root = config['
|
53
|
+
controller_name = config['controller_name'] || "ApplicationController"
|
54
|
+
flex_root = config['flex_root'] || "app/flex"
|
44
55
|
distributed = config['distributed'] || false
|
45
56
|
rescue
|
46
57
|
base_folder = base_package = flex_project_name.downcase
|
@@ -1,18 +1,7 @@
|
|
1
1
|
# Used for analyzing your schema and exporting a model.yml file for Rx
|
2
|
-
require "yaml"
|
3
|
-
require "erb"
|
4
|
-
require File.dirname(__FILE__) + "/schema_to_yaml/settings/config"
|
5
|
-
require File.dirname(__FILE__) + "/schema_to_yaml/settings/core"
|
6
|
-
|
7
|
-
Dir[File.dirname(__FILE__) + "/schema_to_yaml/extensions/*.rb"].each do |f|
|
8
|
-
require f
|
9
|
-
end
|
10
|
-
|
11
2
|
# Provides facilities to convert an existing Rails application schema.rb file to
|
12
3
|
# RestfulX model.yml file
|
13
4
|
module SchemaToYaml
|
14
|
-
RxSettings = SchemaToYaml::Settings::Core
|
15
|
-
|
16
5
|
# SchemaToYaml.schema_to_yaml
|
17
6
|
# - set of commands that introspects your database and formats your model.yml for export
|
18
7
|
def self.schema_to_yaml
|
@@ -2,6 +2,9 @@
|
|
2
2
|
# Used to read in settings from restfulx.yml for use in code generation
|
3
3
|
module SchemaToYaml
|
4
4
|
module Settings
|
5
|
+
# We try to figure out the application root using a number of possible options
|
6
|
+
APP_ROOT = defined?(RAILS_ROOT) ? RAILS_ROOT : defined?(Merb) ? Merb.root : File.expand_path(".")
|
7
|
+
|
5
8
|
class Core
|
6
9
|
class << self
|
7
10
|
def name
|
@@ -29,7 +32,7 @@ module SchemaToYaml
|
|
29
32
|
when Hash
|
30
33
|
self._settings = name_or_hash
|
31
34
|
when String, Symbol
|
32
|
-
root_path = defined?(
|
35
|
+
root_path = defined?(APP_ROOT) ? "#{APP_ROOT}/config/" : ""
|
33
36
|
file_path = name_or_hash.is_a?(Symbol) ? "#{root_path}#{name_or_hash}.yml" : name_or_hash
|
34
37
|
self._settings = YAML.load(ERB.new(File.read(file_path)).result)
|
35
38
|
self._settings = _settings[RAILS_ENV] if defined?(RAILS_ENV)
|
@@ -10,8 +10,8 @@ module SWFHelper
|
|
10
10
|
:version => '9.0.0',
|
11
11
|
:express_install_swf => '/expressInstall.swf',
|
12
12
|
:flash_vars => nil,
|
13
|
-
:params =>
|
14
|
-
:attributes =>
|
13
|
+
:params => { },
|
14
|
+
:attributes => { },
|
15
15
|
:create_div => false,
|
16
16
|
:include_authenticity_token => true,
|
17
17
|
:include_session_token => true
|
@@ -34,7 +34,11 @@ module SWFHelper
|
|
34
34
|
params[:flash_vars].reverse_merge!(:authenticity_token => form_authenticity_token)
|
35
35
|
end
|
36
36
|
if params[:include_session_token]
|
37
|
-
|
37
|
+
if RAILS_GEM_VERSION =~ /^2.3/
|
38
|
+
params[:flash_vars].reverse_merge!(:session_token => request.session_options[:id])
|
39
|
+
else
|
40
|
+
params[:flash_vars].reverse_merge!(:session_token => session.session_id)
|
41
|
+
end
|
38
42
|
end
|
39
43
|
end
|
40
44
|
|
data/lib/restfulx/tasks.rb
CHANGED
@@ -49,8 +49,8 @@ class RxConfigGenerator < Rails::Generator::Base
|
|
49
49
|
end
|
50
50
|
|
51
51
|
@component_names = []
|
52
|
-
if File.exists?("#{flex_root}/#{base_folder}/
|
53
|
-
@component_names = list_mxml_files("#{flex_root}/#{base_folder}/
|
52
|
+
if File.exists?("#{flex_root}/#{base_folder}/views/generated")
|
53
|
+
@component_names = list_mxml_files("#{flex_root}/#{base_folder}/views/generated")
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -61,6 +61,8 @@ class RxConfigGenerator < Rails::Generator::Base
|
|
61
61
|
m.template 'restfulx.yml', 'config/restfulx.yml'
|
62
62
|
m.template 'restfulx.erb', 'config/initializers/restfulx.rb'
|
63
63
|
|
64
|
+
m.template 'session_store_flash.erb', 'config/initializers/session_store_flash.rb' if RAILS_GEM_VERSION =~ /2.3/
|
65
|
+
|
64
66
|
m.directory "#{flex_root}"
|
65
67
|
|
66
68
|
if @use_air
|
@@ -85,19 +87,26 @@ class RxConfigGenerator < Rails::Generator::Base
|
|
85
87
|
m.file "html-template/history/#{file}", "html-template/history/#{file}"
|
86
88
|
end
|
87
89
|
|
88
|
-
%w(
|
90
|
+
%w(views controllers commands models events helpers).each do |dir|
|
89
91
|
m.directory "#{flex_root}/#{base_folder}/#{dir}"
|
90
92
|
end
|
91
93
|
|
92
|
-
m.directory "#{flex_root}/#{base_folder}/
|
94
|
+
m.directory "#{flex_root}/#{base_folder}/views/generated"
|
93
95
|
|
94
96
|
framework_release = RestfulX::FRAMEWORK_VERSION
|
95
97
|
framework_distribution_url = "http://restfulx.github.com/releases/restfulx-#{framework_release}.swc"
|
96
98
|
framework_destination_file = "lib/restfulx-#{framework_release}.swc"
|
97
99
|
|
98
100
|
if !options[:skip_framework] && !File.exist?(framework_destination_file)
|
99
|
-
puts "
|
100
|
-
|
101
|
+
puts "Fetching #{framework_release} framework binary from: #{framework_distribution_url} ..."
|
102
|
+
begin
|
103
|
+
framework_swc = open(framework_distribution_url).read
|
104
|
+
rescue
|
105
|
+
puts "ERROR: Unable to download and install #{framework_distribution_url}."
|
106
|
+
puts "Please check your internet connectivity and try again."
|
107
|
+
exit
|
108
|
+
end
|
109
|
+
open(framework_destination_file, "wb").write(framework_swc) unless framework_swc.blank?
|
101
110
|
puts "done. saved to #{framework_destination_file}"
|
102
111
|
end
|
103
112
|
|
@@ -110,7 +119,7 @@ class RxConfigGenerator < Rails::Generator::Base
|
|
110
119
|
|
111
120
|
m.template 'index.erb', 'app/views/flex/index.html.erb'
|
112
121
|
|
113
|
-
m.file 'routes.erb', 'config/routes.rb', :collision => :
|
122
|
+
m.file 'routes.erb', 'config/routes.rb', :collision => :ask
|
114
123
|
|
115
124
|
FileUtils.rm 'public/index.html' if File.exist?('public/index.html')
|
116
125
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<actionScriptProperties mainApplicationPath="<%= flex_project_name %>.mxml" version="3">
|
3
|
-
<compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="public/bin" rootURL="http://localhost:3000/bin" sourceFolderPath="<%= flex_root %>" strict="true" useApolloConfig="false" verifyDigests="true" warn="true">
|
3
|
+
<compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored,Nested" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="public/bin" rootURL="http://localhost:3000/bin" sourceFolderPath="<%= flex_root %>" strict="true" useApolloConfig="false" verifyDigests="true" warn="true">
|
4
4
|
<compilerSourcePath/>
|
5
5
|
<libraryPath defaultLinkType="1">
|
6
6
|
<libraryPathEntry kind="4" path=""/>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<actionScriptProperties mainApplicationPath="<%= flex_project_name %>.mxml" version="3">
|
3
|
-
<compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="bin-debug" sourceFolderPath="<%= flex_root %>" strict="true" useApolloConfig="true" verifyDigests="true" warn="true">
|
3
|
+
<compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored,Nested" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="bin-debug" sourceFolderPath="<%= flex_root %>" strict="true" useApolloConfig="true" verifyDigests="true" warn="true">
|
4
4
|
<compilerSourcePath/>
|
5
5
|
<libraryPath defaultLinkType="1">
|
6
6
|
<libraryPathEntry kind="4" path=""/>
|
@@ -1,11 +1,47 @@
|
|
1
|
-
#
|
2
|
-
# which
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
# the following patches allow us to overwrite session key on file uploads from Flash,
|
2
|
+
# which ends up creating a new session for every File.upload() invocation.
|
3
|
+
|
4
|
+
<% if RAILS_GEM_VERSION =~ /^2.3/ -%>
|
5
|
+
require 'rack/utils'
|
6
|
+
|
7
|
+
class FlashSessionCookieMiddleware
|
8
|
+
def initialize(app, session_key = '_session_id')
|
9
|
+
@app = app
|
10
|
+
@session_key = session_key
|
11
|
+
@session_token = "_session_id"
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
|
16
|
+
params = ::Rack::Utils.parse_query(env['QUERY_STRING'])
|
17
|
+
env['HTTP_COOKIE'] = [ @session_key, params[@session_token] ].join('=').freeze unless params[@session_token].nil?
|
18
|
+
end
|
19
|
+
@app.call(env)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class FlexNestedAttributeMiddleware
|
24
|
+
def initialize(app)
|
25
|
+
@app = app
|
26
|
+
end
|
27
|
+
|
28
|
+
def call(env)
|
29
|
+
req = Rack::Request.new(env)
|
30
|
+
if req && req.path_info =~ /\.fxml$/
|
31
|
+
if req.put? || req.post? || req.delete?
|
32
|
+
req.params.each do |key,value|
|
33
|
+
value.select { |k,v| k =~ /\_attributes$/ }.each do |match|
|
34
|
+
env['rack.request.form_hash'][key][match[0]] = ActiveSupport::JSON.decode(match[1])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
@app.call(env)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
ActionController::Dispatcher.middleware.insert_after 'ActionController::ParamsParser', FlexNestedAttributeMiddleware
|
44
|
+
<% else -%>
|
9
45
|
class CGI::Session
|
10
46
|
alias original_initialize initialize
|
11
47
|
|
@@ -26,6 +62,7 @@ class CGI::Session
|
|
26
62
|
return option
|
27
63
|
end
|
28
64
|
end
|
65
|
+
<% end -%>
|
29
66
|
|
30
67
|
# If you have configured your Rails/Flex/AIR application to share authenticity_token
|
31
68
|
# comment this out to enable forgery protection. By default, this is disabled to allow
|
@@ -2,22 +2,22 @@
|
|
2
2
|
|
3
3
|
# This option controls what the main Flex application file will be called.
|
4
4
|
# By default it will be equal to the name of your rails project camelized
|
5
|
-
|
5
|
+
project_name: <%= project_name %>
|
6
6
|
|
7
7
|
# This options determines what the root folder for generated Flex code is.
|
8
8
|
# By default 'app/flex'
|
9
|
-
|
9
|
+
flex_root: <%= flex_root %>
|
10
10
|
|
11
11
|
# By default flex models, commands, controllers and components are genearated into
|
12
12
|
# <flex-root>/<your rails project name> folder. If you'd like to customize the target folder
|
13
13
|
# (to say append a "com" package before your rails project name) uncomment the line below
|
14
14
|
# base-package must follow the usual flex package notation (a string separated by ".")
|
15
|
-
|
15
|
+
base_package: <%= base_package %>
|
16
16
|
|
17
17
|
# Main RestfulX controller is typically named AppicationController. This controller is created in
|
18
18
|
# <base-package>.controllers folder. You can customize the name by uncommenting the following line
|
19
19
|
# and changing the controller name.
|
20
|
-
|
20
|
+
controller_name: <%= command_controller_name %>
|
21
21
|
|
22
22
|
# If you are using Rails on the back-end and Adobe AIR as the client you can generate Rails/Flex/AIR
|
23
23
|
# code to take advantage of synchronization (online/offline) support in RestfulX by changing the following
|