restfulx 1.2.2 → 1.2.3
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/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
|