dima-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.
Files changed (58) hide show
  1. data/README.rdoc +1 -1
  2. data/Rakefile +4 -2
  3. data/VERSION.yml +1 -1
  4. data/app_generators/rx_app/rx_app_generator.rb +2 -2
  5. data/app_generators/rx_app/templates/actionscript.properties +1 -1
  6. data/app_generators/rx_app/templates/actionscriptair.properties +1 -1
  7. data/app_generators/rx_app/templates/mainapp-config.xml +1 -0
  8. data/app_generators/rx_app/templates/mainapp.mxml +19 -3
  9. data/app_generators/rx_app/templates/restfulx.yml +9 -24
  10. data/bin/rx-gen +1 -1
  11. data/lib/restfulx/active_foo.rb +5 -3
  12. data/lib/restfulx/active_record_tasks.rb +1 -2
  13. data/lib/restfulx/active_record_uuid_helper.rb +17 -0
  14. data/lib/restfulx/configuration.rb +20 -26
  15. data/lib/restfulx/{schema_to_yaml → rails/schema_to_yaml}/extensions/enumerable.rb +1 -0
  16. data/lib/restfulx/{schema_to_yaml → rails/schema_to_yaml}/settings/config.rb +1 -0
  17. data/lib/restfulx/{schema_to_yaml → rails/schema_to_yaml}/settings/core.rb +4 -1
  18. data/lib/restfulx/{schema_to_yaml.rb → rails/schema_to_yaml.rb} +2 -12
  19. data/lib/restfulx/rails/swf_helper.rb +7 -8
  20. data/lib/restfulx/tasks.rb +0 -1
  21. data/lib/restfulx.rb +2 -10
  22. data/rails_generators/rx_config/rx_config_generator.rb +20 -9
  23. data/rails_generators/rx_config/templates/actionscript.properties +1 -1
  24. data/rails_generators/rx_config/templates/actionscriptair.properties +1 -1
  25. data/rails_generators/rx_config/templates/mainapp-config.xml +1 -0
  26. data/rails_generators/rx_config/templates/restfulx.erb +46 -10
  27. data/rails_generators/rx_config/templates/restfulx.yml +9 -5
  28. data/rails_generators/rx_config/templates/session_store_flash.erb +1 -0
  29. data/rails_generators/rx_main_app/rx_main_app_generator.rb +2 -2
  30. data/rails_generators/rx_main_app/templates/mainapp.mxml +1 -1
  31. data/rails_generators/rx_scaffold/rx_scaffold_generator.rb +16 -7
  32. data/rails_generators/rx_scaffold/templates/controllers/resource_controller.rb.erb +2 -2
  33. data/rails_generators/rx_scaffold/templates/functional_test.rb +45 -0
  34. data/rails_generators/rx_scaffold/templates/helper_test.rb +4 -0
  35. data/rails_generators/rx_scaffold/templates/layouts/default.erb +7 -5
  36. data/rails_generators/rx_scaffold/templates/migration.rb.erb +4 -4
  37. data/rxgen_generators/rx_config/rx_config_generator.rb +2 -0
  38. data/rxgen_generators/rx_controller/rx_controller_generator.rb +1 -0
  39. data/rxgen_generators/rx_controller/templates/assist.py +4 -4
  40. data/rxgen_generators/rx_controller/templates/iso8601.py +92 -0
  41. data/rxgen_generators/rx_main_app/rx_main_app_generator.rb +2 -2
  42. data/rxgen_generators/rx_main_app/templates/mainapp.mxml +19 -3
  43. data/rxgen_generators/rx_scaffold/rx_scaffold_generator.rb +57 -10
  44. data/rxgen_generators/rx_scaffold/templates/{component.mxml.erb → layouts/default.erb} +56 -10
  45. data/rxgen_generators/rx_scaffold/templates/model.as.erb +33 -2
  46. data/spec/restfulx_spec.rb +1 -4
  47. data/spec/spec_helper.rb +0 -3
  48. data/tasks/restfulx.rake +2 -0
  49. data/test/rails/helpers/functional_test_helper.rb +1 -1
  50. data/test/rails/helpers/test_helper.rb +1 -8
  51. data/test/rails/helpers/unit_test_helper.rb +2 -3
  52. data/test/rails/test_active_foo.rb +1 -1
  53. data/test/rails/test_rails_integration_functional.rb +1 -1
  54. data/test/rails/test_to_fxml.rb +1 -1
  55. data/test/rails/test_to_json.rb +1 -1
  56. metadata +60 -75
  57. data/lib/restfulx/uuid_helper.rb +0 -15
  58. /data/test/rails/controllers/{application.rb → application_controller.rb} +0 -0
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://restfulx.lighthouseapp.com/dashboard
42
+ http://github.com/dima/restfulx_framework/issues
43
43
 
44
44
  Get involved with the community:
45
45
 
data/Rakefile CHANGED
@@ -9,12 +9,14 @@ begin
9
9
  gem.homepage = "http://restfulx.org"
10
10
  gem.rubyforge_project = "restfulx"
11
11
  gem.authors = ["Dima Berastau"]
12
- gem.files = FileList["[A-Z]*", "{bin,app_generators,rails_generators,rxgen_generators,lib,test,spec}/**/*"]
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 dima-jeweler -s http://gems.github.com"
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
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 2
3
2
  :major: 1
4
3
  :minor: 2
4
+ :patch: 3
@@ -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(components controllers commands models events).each do |dir|
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}/components/generated"
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=""/>
@@ -11,6 +11,7 @@
11
11
  <name>DateTime</name>
12
12
  <name>Lazy</name>
13
13
  <name>Ignored</name>
14
+ <name>Nested</name>
14
15
  </keep-as3-metadata>
15
16
  <optimize>true</optimize>
16
17
  <keep-generated-actionscript>false</keep-generated-actionscript>
@@ -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 %>.components.generated.*"
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>
@@ -14,12 +14,13 @@
14
14
  import org.restfulx.events.PushStartEvent;
15
15
  import org.restfulx.controllers.ChangeController;
16
16
  import org.restfulx.services.ISyncingServiceProvider;
17
- import org.restfulx.services.http.XMLHTTPServiceProvider;
18
17
  <% end -%>
19
18
  import org.restfulx.services.air.AIRServiceProvider;
20
19
  <% end -%>
21
20
  <% if use_gae -%>
22
21
  import org.restfulx.services.http.GAEHTTPServiceProvider;
22
+ <% else -%>
23
+ import org.restfulx.services.http.XMLHTTPServiceProvider;
23
24
  <% end -%>
24
25
  import org.restfulx.Rx;
25
26
  import <%= base_package %>.controllers.<%= command_controller_name %>;
@@ -53,9 +54,15 @@
53
54
  AIRServiceProvider.ID, "<%= base_package %>");
54
55
  <% if distributed -%>
55
56
 
57
+ <% if use_gae -%>
58
+ Rx.changes.setSyncProviders(
59
+ ISyncingServiceProvider(Rx.services.getServiceProvider(AIRServiceProvider.ID)),
60
+ Rx.services.getServiceProvider(GAEHTTPServiceProvider.ID));
61
+ <% else -%>
56
62
  Rx.changes.setSyncProviders(
57
63
  ISyncingServiceProvider(Rx.services.getServiceProvider(AIRServiceProvider.ID)),
58
64
  Rx.services.getServiceProvider(XMLHTTPServiceProvider.ID));
65
+ <% end -%>
59
66
 
60
67
  Rx.changes.addEventListener(PushStartEvent.ID, onPushStart);
61
68
  Rx.changes.addEventListener(PushEndEvent.ID, onPushEnd);
@@ -93,7 +100,11 @@
93
100
  online = (socketMonitor.available) ? true : false;
94
101
 
95
102
  if (online) {
103
+ <% if use_gae -%>
104
+ Rx.defaultServiceId = GAEHTTPServiceProvider.ID;
105
+ <% else -%>
96
106
  Rx.defaultServiceId = XMLHTTPServiceProvider.ID;
107
+ <% end -%>
97
108
  } else {
98
109
  Rx.defaultServiceId = AIRServiceProvider.ID;
99
110
  }
@@ -101,8 +112,13 @@
101
112
 
102
113
  private function getCurrentProviderName(id:int):String {
103
114
  switch (id) {
115
+ <% if use_gae -%>
116
+ case GAEHTTPServiceProvider.ID:
117
+ return "GAE";
118
+ <% else -%>
104
119
  case XMLHTTPServiceProvider.ID:
105
- return "Rails";
120
+ return "XML/HTTP";
121
+ <% end -%>
106
122
  case AIRServiceProvider.ID:
107
123
  return "AIR (SQLite)";
108
124
  default :
@@ -2,50 +2,35 @@
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
- project-name: <%= project_name %>
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
- flex-root: <%= flex_root %>
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
- base-package: <%= base_package %>
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
- controller-name: <%= command_controller_name %>
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
25
  distributed: <%= distributed %>
26
26
 
27
- # These options control code-generation options for view components, Flex and Rails models and so on.
28
- # Allowing you to choose what controller patterns, layouts, attachment plugin you want to use, etc.
29
- defaults: &defaults
30
- attachment_plugin: 'paperclip' # => paperclip/attachment_fu
31
- controller_pattern: 'default' # => default/resource_controller
32
- layouts:
33
- default: 'default' # => default (more coming soon)
34
- ignored: # => ignored tables/fields won't appear in model.yml
35
- tables: [table1 table2]
36
- fields: [field1 field2]
37
-
38
- development:
39
- <<: *defaults
40
-
41
- test:
42
- <<: *defaults
43
-
44
- production:
45
- <<: *defaults
27
+ # Choose the layout to use for generated Flex view components
28
+ layouts:
29
+ default: 'default'
46
30
 
47
- # Special model.yml fields for RestfulX code-generation:
31
+ # The following special model.yml fields are supported.
48
32
  #
33
+ # For example:
49
34
  # attachment_field: [avatar]
50
35
  # * arg takes Paperclip field name, or takes [uploaded_data] for Attachment_Fu
51
36
  # belongs_to: [account, profile]
data/bin/rx-gen CHANGED
@@ -22,7 +22,7 @@ require 'rubigen'
22
22
  require File.join(File.dirname(__FILE__), '..', 'lib', 'restfulx')
23
23
 
24
24
  if %w(-v --version).include? ARGV.first
25
- puts "#{File.basename($0)} #{RestfulX::VERSION}"
25
+ puts "#{File.basename($0)} #{RestfulX::FRAMEWORK_VERSION}"
26
26
  exit(0)
27
27
  end
28
28
 
@@ -2,7 +2,6 @@
2
2
  # ~wrong~ from the point of view of Flex clients.
3
3
  #
4
4
  # Some of these things are:
5
- # * Date formats
6
5
  # * XML format (Flex *really* doesn't like dashes in XML messages)
7
6
  # * Errors (we need to be more specific and communicate what went wrong *where*)
8
7
  #
@@ -89,6 +88,9 @@ module ActiveSupport
89
88
  options[:indent] ||= 2
90
89
  options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
91
90
  options.merge!(:dasherize => false)
91
+
92
+ options[:attributes] ||= {}
93
+ options[:attributes].merge!(:type => "array")
92
94
 
93
95
  root = options.delete(:root).to_s
94
96
  children = options.delete(:children)
@@ -103,9 +105,9 @@ module ActiveSupport
103
105
 
104
106
  xml = options[:builder]
105
107
  if empty?
106
- xml.tag!(root, options[:skip_types] ? {} : {:type => "array"})
108
+ xml.tag!(root, options[:attributes])
107
109
  else
108
- xml.tag!(root, options[:skip_types] ? {} : {:type => "array"}) {
110
+ xml.tag!(root, options[:attributes]) {
109
111
  yield xml if block_given?
110
112
  each { |e| e.to_fxml(opts.merge!({ :skip_instruct => true })) }
111
113
  }
@@ -2,7 +2,7 @@
2
2
  # - db:mysql:stage
3
3
  # - db:refresh
4
4
  require File.join(File.dirname(__FILE__), 'tasks')
5
- require File.join(File.dirname(__FILE__), 'schema_to_yaml')
5
+ require File.join(File.dirname(__FILE__), 'rails', 'schema_to_yaml')
6
6
 
7
7
  # stores local copy of the application environment ('production', 'test', etc)
8
8
  # so that appropriate values in config/database.yml are used
@@ -87,5 +87,4 @@ namespace :db do
87
87
  SchemaToYaml.schema_to_yaml
88
88
  end
89
89
  end
90
-
91
90
  end
@@ -0,0 +1,17 @@
1
+ # Patches ActiveRecord models to use UUID based IDs instead of the default numeric ones
2
+ require 'uuidtools'
3
+
4
+ # Extends ActiveRecord models with UUID based IDs
5
+ module RestfulX
6
+ module UUIDHelper
7
+ def self.included(base)
8
+ base.class_eval do
9
+ before_create :generate_uuid
10
+ end
11
+ end
12
+
13
+ def generate_uuid
14
+ self.id = UUIDTools::UUID.random_create.to_s.gsub("-", "") unless self.id
15
+ end
16
+ end
17
+ end
@@ -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
@@ -13,33 +22,18 @@ class String
13
22
  end
14
23
  end
15
24
 
25
+ # Primary RestfulX configuration options
16
26
  module RestfulX
17
27
  # Computes necessary configuration options from the environment. This can be used in Rails, Merb
18
28
  # or standalone from the command line.
19
29
  module Configuration
30
+ # We try to figure out the application root using a number of possible options
20
31
  APP_ROOT = defined?(RAILS_ROOT) ? RAILS_ROOT : defined?(Merb) ? Merb.root : File.expand_path(".")
32
+
33
+ RxSettings = SchemaToYaml::Settings::Core
21
34
 
22
- # Extract project, package, controller names from the environment. This will respect
23
- # config/restfulx.yml if it exists, you can override all of the defaults there. The defaults are:
24
- # - *base-package* same as project name downcased
25
- # - *controller-name* 'ApplicationController'
26
- #
27
- # Here's a sample restfulx.yml file:
28
- #
29
- # RestfulX code generation configuration options
30
- #
31
- # By default flex models, commands, controllers and components are genearated into
32
- # app/flex/<your rails project name> folder. If you'd like to customize the target folder
33
- # (to say append a "com" package before your rails project name) uncomment the line below
34
- # base-package must follow the usual flex package notation (a string separated by ".")
35
- #
36
- # base-package: com.pomodo
37
- #
38
- # Main RestfulX controller is typically named AppicationController. This controller is created in
39
- # <base-package>.controllers folder. You can customize the name by uncommenting the following line
40
- # and changing the controller name.
41
- #
42
- # controller-name: ApplicationController
35
+ # Extract project, package, controller name, etc from the environment. This will respect
36
+ # config/restfulx.yml if it exists, you can override all of the defaults there.
43
37
  def extract_names(project = nil)
44
38
  if project
45
39
  project_name = project.downcase.gsub(/\W/, '')
@@ -52,12 +46,12 @@ module RestfulX
52
46
  # give a chance to override the settings via restfulx.yml
53
47
  begin
54
48
  config = YAML.load(File.open("#{APP_ROOT}/config/restfulx.yml"))
55
- base_package = config['base-package'] || flex_project_name.downcase
56
- base_folder = base_package.gsub('.', '/').gsub(/\W/, '')
57
- project_name = config['project-name'].downcase.gsub(/\W/, '') || project_name
49
+ base_package = config['base_package'] || flex_project_name.downcase
50
+ base_folder = base_package.gsub('.', '/')
51
+ project_name = config['project_name'].downcase.gsub(/\W/, '') || project_name
58
52
  flex_project_name = project_name.camelize
59
- controller_name = config['controller-name'] || "ApplicationController"
60
- flex_root = config['flex-root'] || "app/flex"
53
+ controller_name = config['controller_name'] || "ApplicationController"
54
+ flex_root = config['flex_root'] || "app/flex"
61
55
  distributed = config['distributed'] || false
62
56
  rescue
63
57
  base_folder = base_package = flex_project_name.downcase
@@ -1,3 +1,4 @@
1
+ # Enumerable extensions
1
2
  module Enumerable
2
3
  # Helps you find duplicates
3
4
  # used in schema_to_yaml.rb for cleanup
@@ -1,3 +1,4 @@
1
+ # SchemaToYaml settings
1
2
  module SchemaToYaml
2
3
  module Settings
3
4
  class Config
@@ -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?(RAILS_ROOT) ? "#{RAILS_ROOT}/config/" : ""
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)
@@ -1,16 +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
-
2
+ # Provides facilities to convert an existing Rails application schema.rb file to
3
+ # RestfulX model.yml file
11
4
  module SchemaToYaml
12
- RxSettings = SchemaToYaml::Settings::Core
13
-
14
5
  # SchemaToYaml.schema_to_yaml
15
6
  # - set of commands that introspects your database and formats your model.yml for export
16
7
  def self.schema_to_yaml
@@ -116,5 +107,4 @@ module SchemaToYaml
116
107
  File.open(yml_file, "w") { |f| f << schema.to_s }
117
108
  puts "Model.yml created at db/model.yml"
118
109
  end
119
-
120
110
  end
@@ -1,6 +1,5 @@
1
1
  # Adds a little helper to make it easier empbedding SWFs in ERB templates.
2
2
  module SWFHelper
3
-
4
3
  # Creates a swfObject Javascript call. You must include swfobject.js to use this.
5
4
  # See http://code.google.com/p/swfobject/wiki/documentation for full details and documentation
6
5
  # of the swfobject js library.
@@ -11,8 +10,8 @@ module SWFHelper
11
10
  :version => '9.0.0',
12
11
  :express_install_swf => '/expressInstall.swf',
13
12
  :flash_vars => nil,
14
- :params => nil,
15
- :attributes => nil,
13
+ :params => { },
14
+ :attributes => { },
16
15
  :create_div => false,
17
16
  :include_authenticity_token => true,
18
17
  :include_session_token => true
@@ -29,16 +28,17 @@ module SWFHelper
29
28
  # flashVars['authenticity_token'] = <%= form_authenticity_token -%>
30
29
  # flashVars['session_token'] = <%= session.session_id -%>
31
30
  # </script>
32
- # If you include an authenticity_token parameter in flashVars,
33
- # then the Flex app will add it to Rx.defaultMetadata, so that it will be sent
34
- # back up to your Rails app with every request.
35
31
  params[:flash_vars] ||= {}
36
32
  if params[:flash_vars].is_a?(Hash)
37
33
  if params[:include_authenticity_token] && ActionController::Base.allow_forgery_protection
38
34
  params[:flash_vars].reverse_merge!(:authenticity_token => form_authenticity_token)
39
35
  end
40
36
  if params[:include_session_token]
41
- params[:flash_vars].reverse_merge!(:session_token => session.session_id)
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
42
42
  end
43
43
  end
44
44
 
@@ -56,5 +56,4 @@ module SWFHelper
56
56
  swf_tag += content_tag(:div, nil, :id => params[:id]) if params[:create_div]
57
57
  swf_tag
58
58
  end
59
-
60
59
  end
@@ -1,6 +1,5 @@
1
1
  # Rake tasks for building RestfulX-based Flex and AIR applications
2
2
  require 'rake'
3
- require 'ftools'
4
3
  require 'rexml/document'
5
4
  require 'activesupport'
6
5
  require File.join(File.dirname(__FILE__), 'configuration')
data/lib/restfulx.rb CHANGED
@@ -5,17 +5,10 @@
5
5
  module RestfulX
6
6
 
7
7
  # :stopdoc:
8
- VERSION = '1.2.2'
9
- FRAMEWORK_VERSION = '1.2.2'
8
+ FRAMEWORK_VERSION = '1.2.3'
10
9
  LIB_DIR = File.join(File.dirname(__FILE__), 'restfulx/')
11
10
  # :startdoc:
12
11
 
13
- # Returns the version string for the library.
14
- #
15
- def self.version
16
- VERSION
17
- end
18
-
19
12
  # Utility method used to require all files ending in .rb that lie in the
20
13
  # directory below this file that has the same name as the filename passed
21
14
  # in. Optionally, a specific _directory_ name can be passed in such that
@@ -28,7 +21,6 @@ module RestfulX
28
21
 
29
22
  Dir.glob(search_me).sort.each {|rb| require rb}
30
23
  end
31
-
32
24
  end
33
25
 
34
26
  require RestfulX::LIB_DIR + 'configuration'
@@ -54,7 +46,7 @@ elsif defined?(ActionController::Base)
54
46
  # if we are not running in Merb, try to hook up Rails
55
47
  Mime::Type.register_alias "application/xml", :fxml
56
48
 
57
- ['active_foo', 'rails/swf_helper', 'schema_to_yaml'].each { |lib| require RestfulX::LIB_DIR + lib }
49
+ ['active_foo', 'rails/swf_helper', 'rails/schema_to_yaml'].each { |lib| require RestfulX::LIB_DIR + lib }
58
50
 
59
51
  ActionView::Base.send :include, SWFHelper unless ActionView::Base.included_modules.include?(SWFHelper)
60
52
  ActiveRecord::Migration.send :include, SchemaToYaml
@@ -22,7 +22,7 @@ class RxConfigGenerator < Rails::Generator::Base
22
22
  @flex_root = extract_names
23
23
 
24
24
  @base_package = options[:base_flex_package] if options[:base_flex_package]
25
- @base_folder = options[:base_flex_package].gsub('.', '/').gsub(/\W/, '') if options[:base_flex_package]
25
+ @base_folder = options[:base_flex_package].gsub('.', '/') if options[:base_flex_package]
26
26
  @flex_root = options[:flex_root] if options[:flex_root]
27
27
  @distributed = options[:distributed]
28
28
 
@@ -49,18 +49,20 @@ class RxConfigGenerator < Rails::Generator::Base
49
49
  end
50
50
 
51
51
  @component_names = []
52
- if File.exists?("#{flex_root}/#{base_folder}/components/generated")
53
- @component_names = list_mxml_files("#{flex_root}/#{base_folder}/components/generated")
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
 
57
57
  def manifest
58
58
  record do |m|
59
- m.file 'restfulx_tasks.rake', 'lib/tasks/restfulx_tasks.rake'
59
+ m.file 'restfulx_tasks.rake', 'lib/tasks/restfulx_tasks.rake' if !options[:skip_tasks]
60
60
  m.file 'flex.properties', '.flexProperties'
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(components controllers commands models events).each do |dir|
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}/components/generated"
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 "fetching #{framework_release} framework binary from: #{framework_distribution_url} ..."
100
- open(framework_destination_file, "wb").write(open(framework_distribution_url).read)
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 => :force
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
 
@@ -126,6 +135,8 @@ class RxConfigGenerator < Rails::Generator::Base
126
135
  "Default: false") { |v| options[:air_config] = v }
127
136
  opt.on("--skip-framework", "Don't fetch the latest framework binary. You'll have to link/build the framework yourself.",
128
137
  "Default: false") { |v| options[:skip_framework] = v }
138
+ opt.on("--skip-tasks", "Don't install restfulx gem tasks hook into the project.",
139
+ "Default: false") { |v| options[:skip_tasks] = v }
129
140
  opt.on("--flex-root [FOLDER]", "Root folder for generated flex code.",
130
141
  "Default: app/flex") { |v| options[:flex_root] = v }
131
142
  opt.on("--base-flex-package [PACKAGE]", "Base package for your application.",
@@ -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=""/>
@@ -11,6 +11,7 @@
11
11
  <name>DateTime</name>
12
12
  <name>Lazy</name>
13
13
  <name>Ignored</name>
14
+ <name>Nested</name>
14
15
  </keep-as3-metadata>
15
16
  <optimize>true</optimize>
16
17
  <keep-generated-actionscript>false</keep-generated-actionscript>