restfulx 1.2.5 → 1.3.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.
- data/README.rdoc +3 -3
- data/Rakefile +17 -2
- data/VERSION.yml +2 -3
- data/bin/rx-gen +1 -1
- data/ext/restfulx/ext/amf/serializer/extconf.rb +3 -0
- data/lib/restfulx.rb +43 -81
- data/lib/restfulx/active_record_tasks.rb +8 -6
- data/lib/restfulx/active_record_uuid_helper.rb +9 -10
- data/lib/restfulx/amf.rb +14 -0
- data/lib/restfulx/amf/class_mapping.rb +106 -0
- data/lib/restfulx/amf/ext.rb +11 -0
- data/lib/restfulx/amf/ext/serializer.bundle +0 -0
- data/lib/restfulx/amf/pure.rb +11 -0
- data/lib/restfulx/amf/pure/io_helpers.rb +52 -0
- data/lib/restfulx/amf/pure/serializer.rb +304 -0
- data/lib/restfulx/configuration.rb +16 -12
- data/lib/restfulx/{rails/recipes.rb → recipes.rb} +1 -2
- data/lib/restfulx/rx_action_controller.rb +34 -0
- data/lib/restfulx/rx_active_record.rb +360 -0
- data/lib/restfulx/rx_active_support.rb +139 -0
- data/lib/restfulx/{datamapper_foo.rb → rx_datamapper.rb} +0 -2
- data/lib/restfulx/{rails/schema_to_yaml.rb → schema_to_rx_yaml.rb} +88 -5
- data/lib/restfulx/swf_helper.rb +61 -0
- data/lib/restfulx/tasks.rb +5 -3
- data/rails_generators/rx_config/rx_config_generator.rb +2 -2
- data/rails_generators/rx_config/templates/mainapp.mxml +1 -1
- data/rails_generators/rx_config/templates/restfulx.erb +5 -3
- data/rails_generators/rx_main_app/rx_main_app_generator.rb +2 -2
- data/rails_generators/rx_scaffold/rx_scaffold_generator.rb +7 -7
- data/rails_generators/rx_yaml_scaffold/rx_yaml_scaffold_generator.rb +5 -3
- data/rxgen_generators/rx_config/rx_config_generator.rb +1 -1
- data/test/rails/fixtures/locations.yml +5 -6
- data/test/rails/fixtures/notes.yml +5 -15
- data/test/rails/fixtures/projects.yml +7 -23
- data/test/rails/fixtures/tasks.yml +17 -43
- data/test/rails/fixtures/users.yml +7 -11
- data/test/rails/helpers/functional_test_helper.rb +5 -4
- data/test/rails/helpers/performance_test_helper.rb +5 -0
- data/test/rails/helpers/test_helper.rb +27 -0
- data/test/rails/helpers/unit_test_helper.rb +3 -15
- data/test/rails/test_active_foo.rb +21 -25
- data/test/rails/{test_rails_integration_functional.rb → test_notes_controller_functional.rb} +5 -5
- data/test/rails/test_serialiazation_performance.rb +32 -0
- data/test/rails/test_to_amf.rb +30 -0
- data/test/rails/test_to_fxml.rb +18 -15
- data/test/rails/test_to_json.rb +2 -14
- metadata +30 -19
- data/lib/restfulx/active_foo.rb +0 -178
- data/lib/restfulx/rails/schema_to_yaml/extensions/enumerable.rb +0 -8
- data/lib/restfulx/rails/schema_to_yaml/settings/config.rb +0 -17
- data/lib/restfulx/rails/schema_to_yaml/settings/core.rb +0 -73
- data/lib/restfulx/rails/swf_helper.rb +0 -59
@@ -34,7 +34,8 @@ class RxYamlScaffoldGenerator < Rails::Generator::Base
|
|
34
34
|
Rails::Generator::Scripts::Generate.new.run(["rx_scaffold"] + line.split,
|
35
35
|
:flex_only => options[:flex_only],
|
36
36
|
:flex_view_only => options[:flex_view_only],
|
37
|
-
:rails_only => options[:rails_only]
|
37
|
+
:rails_only => options[:rails_only],
|
38
|
+
:collision => options[:collision])
|
38
39
|
puts 'done ...'
|
39
40
|
sleep 1
|
40
41
|
end
|
@@ -44,13 +45,14 @@ class RxYamlScaffoldGenerator < Rails::Generator::Base
|
|
44
45
|
Rails::Generator::Scripts::Generate.new.run(["rx_scaffold"] + line.split,
|
45
46
|
:flex_only => options[:flex_only],
|
46
47
|
:flex_view_only => options[:flex_view_only],
|
47
|
-
:rails_only => options[:rails_only]
|
48
|
+
:rails_only => options[:rails_only],
|
49
|
+
:collision => options[:collision])
|
48
50
|
puts 'done ...'
|
49
51
|
sleep 1
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
53
|
-
Rails::Generator::Scripts::Generate.new.run(["rx_main_app"])
|
55
|
+
Rails::Generator::Scripts::Generate.new.run(["rx_main_app"], :collision => options[:collision])
|
54
56
|
end
|
55
57
|
end
|
56
58
|
|
@@ -5,7 +5,7 @@ class RxConfigGenerator < RubiGen::Base
|
|
5
5
|
|
6
6
|
def manifest
|
7
7
|
record do |m|
|
8
|
-
framework_release = RestfulX::
|
8
|
+
framework_release = RestfulX::VERSION
|
9
9
|
framework_distribution_url = "http://restfulx.github.com/releases/restfulx-#{framework_release}.swc"
|
10
10
|
framework_destination_file = "lib/restfulx-#{framework_release}.swc"
|
11
11
|
|
@@ -1,8 +1,7 @@
|
|
1
1
|
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
2
|
-
vienna:
|
3
|
-
name: Vienna
|
4
|
-
user: ludwig
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
<% for i in 1..1000 %>
|
4
|
+
location_<%= i %>:
|
5
|
+
name: Location<%= i %>
|
6
|
+
user_id: <%= i %>
|
7
|
+
<% end %>
|
@@ -1,17 +1,7 @@
|
|
1
1
|
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
content: Note2ContentText
|
9
|
-
user: user_two
|
10
|
-
|
11
|
-
note_three:
|
12
|
-
content: Note3ContentText
|
13
|
-
user: user_three
|
14
|
-
|
15
|
-
note_four:
|
16
|
-
content: Note4ContentText
|
17
|
-
user: user_four
|
3
|
+
<% for i in 1..1000 %>
|
4
|
+
note_<%= i %>:
|
5
|
+
content: SomeNote<%= i %>
|
6
|
+
user_id: <%= i %>
|
7
|
+
<% end %>
|
@@ -1,25 +1,9 @@
|
|
1
1
|
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
name: Music
|
11
|
-
start_date: <%= 20.days.ago %>
|
12
|
-
completed: false
|
13
|
-
user: ludwig
|
14
|
-
|
15
|
-
hamlet:
|
16
|
-
name: Hamlet
|
17
|
-
start_date: <%= 2.years.ago %>
|
18
|
-
completed: false
|
19
|
-
user: shakespeare
|
20
|
-
|
21
|
-
othello:
|
22
|
-
name: Othello
|
23
|
-
start_date: <%= 20.days.ago %>
|
24
|
-
completed: false
|
25
|
-
user: shakespeare
|
3
|
+
<% for i in 1..1000 %>
|
4
|
+
project_<%= i %>:
|
5
|
+
name: Project<%= i %>
|
6
|
+
start_date: <%= 20.days.ago %>
|
7
|
+
completed: false
|
8
|
+
user_id: <%= i %>
|
9
|
+
<% end %>
|
@@ -1,46 +1,20 @@
|
|
1
1
|
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
location: vienna
|
21
|
-
user: ludwig
|
22
|
-
project: health
|
23
|
-
start_time: <%= 30.days.ago %>
|
24
|
-
|
25
|
-
sound_board:
|
26
|
-
name: Get a new sound board made
|
27
|
-
location: vienna
|
28
|
-
user: ludwig
|
29
|
-
project: health
|
30
|
-
start_time: <%= 30.days.ago %>
|
31
|
-
|
32
|
-
hamlet_soliloquy:
|
33
|
-
name: "Edit Hamlet's soliloquy"
|
34
|
-
notes: "'That is the question' or 'is that the question?'"
|
35
|
-
location: stratford
|
36
|
-
user: shakespeare
|
37
|
-
project: hamlet
|
38
|
-
start_time: <%= 30.days.ago %>
|
39
|
-
|
40
|
-
othello_outline:
|
41
|
-
name: Outline Othello
|
42
|
-
location: stratford
|
43
|
-
user: shakespeare
|
44
|
-
project: othello
|
45
|
-
start_time: <%= 30.days.ago %>
|
3
|
+
<% for i in 1..1000 %>
|
4
|
+
task_one_<%= i %>:
|
5
|
+
name: TaskOne<%= i %>
|
6
|
+
location_id: <%= i %>
|
7
|
+
user_id: <%= i %>
|
8
|
+
project_id: <%= i %>
|
9
|
+
start_time: <%= 30.days.ago %>
|
10
|
+
end_time: <%= 100.days.from_now %>
|
11
|
+
|
12
|
+
task_two_<%= i %>:
|
13
|
+
name: TaskTwo<%= i %>
|
14
|
+
location_id: <%= i %>
|
15
|
+
user_id: <%= i %>
|
16
|
+
project_id: <%= i %>
|
17
|
+
start_time: <%= 30.days.ago %>
|
18
|
+
end_time: <%= 100.days.from_now %>
|
19
|
+
<% end %>
|
46
20
|
|
@@ -1,13 +1,9 @@
|
|
1
1
|
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
login: william
|
11
|
-
first_name: William
|
12
|
-
last_name: Shakespeare
|
13
|
-
email: will@theglobetheater.com
|
3
|
+
<% for i in 1..1000 %>
|
4
|
+
user_<%= i %>:
|
5
|
+
login: user<%= i %>
|
6
|
+
first_name: Foo<%= i %>
|
7
|
+
last_name: Bar<%= i %>
|
8
|
+
email: foo@bar.com
|
9
|
+
<% end %>
|
@@ -3,6 +3,7 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
|
|
3
3
|
schema_file = File.join(File.dirname(__FILE__), '..', 'schema.rb')
|
4
4
|
ENV["RAILS_ENV"] = "test"
|
5
5
|
|
6
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
6
7
|
require File.join(File.dirname(__FILE__), '..', 'controllers', 'application_controller')
|
7
8
|
require File.join(File.dirname(__FILE__), '..', 'controllers', 'notes_controller')
|
8
9
|
|
@@ -11,11 +12,11 @@ puts "config:\n#{config.inspect}"
|
|
11
12
|
ActiveRecord::Base.configurations = config
|
12
13
|
ActiveRecord::Base.establish_connection(config)
|
13
14
|
|
14
|
-
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "
|
15
|
-
ActionController::Base.logger = Logger.new(File.dirname(__FILE__) + "
|
15
|
+
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/../models.log")
|
16
|
+
ActionController::Base.logger = Logger.new(File.dirname(__FILE__) + "/../controllers.log")
|
16
17
|
ApplicationController.append_view_path File.join(File.dirname(__FILE__), '..', 'views')
|
17
18
|
|
18
19
|
load(schema_file) if File.exist?(schema_file)
|
19
20
|
|
20
|
-
|
21
|
-
$:.unshift(
|
21
|
+
ActiveSupport::TestCase.fixture_path = File.join(File.dirname(__FILE__), '..', 'fixtures')
|
22
|
+
$:.unshift(ActiveSupport::TestCase.fixture_path)
|
@@ -3,7 +3,13 @@ RAILS_ROOT = File.join(File.dirname(__FILE__), '..') unless defined? RAILS_ROOT
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'test/unit'
|
5
5
|
|
6
|
+
gem 'activesupport', '= 2.3.2'
|
7
|
+
gem 'activerecord', '= 2.3.2'
|
8
|
+
gem 'actionpack', '= 2.3.2'
|
9
|
+
gem 'rails', '= 2.3.2'
|
10
|
+
|
6
11
|
require 'active_support'
|
12
|
+
require 'active_support/core_ext'
|
7
13
|
require 'active_support/test_case'
|
8
14
|
require 'active_record'
|
9
15
|
require 'active_record/fixtures'
|
@@ -11,7 +17,10 @@ require 'action_controller'
|
|
11
17
|
require 'action_controller/test_case'
|
12
18
|
require 'action_controller/test_process'
|
13
19
|
require 'action_controller/integration'
|
20
|
+
require 'action_controller/assertions/selector_assertions'
|
21
|
+
require 'action_controller/assertions/response_assertions'
|
14
22
|
require 'sqlite3'
|
23
|
+
|
15
24
|
require File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'restfulx')
|
16
25
|
require File.join(File.dirname(__FILE__), '..', 'models', 'note')
|
17
26
|
require File.join(File.dirname(__FILE__), '..', 'models', 'user')
|
@@ -30,6 +39,21 @@ class MockResponse
|
|
30
39
|
|
31
40
|
end
|
32
41
|
|
42
|
+
class ActiveSupport::TestCase
|
43
|
+
include ActiveRecord::TestFixtures
|
44
|
+
include ActionController::TestProcess
|
45
|
+
include ActionController::Assertions::SelectorAssertions
|
46
|
+
include ActionController::Assertions::ResponseAssertions
|
47
|
+
|
48
|
+
self.fixture_path = File.join(File.dirname(__FILE__), "../fixtures")
|
49
|
+
|
50
|
+
self.use_transactional_fixtures = false
|
51
|
+
self.use_instantiated_fixtures = false
|
52
|
+
|
53
|
+
# load up fixtures
|
54
|
+
# fixtures :all
|
55
|
+
end
|
56
|
+
|
33
57
|
class ActiveRecord::TestCase #:nodoc:
|
34
58
|
# Add more helper methods to be used by all tests here...
|
35
59
|
|
@@ -51,4 +75,7 @@ class ActiveRecord::TestCase #:nodoc:
|
|
51
75
|
assert_select(*args, &block)
|
52
76
|
end
|
53
77
|
|
78
|
+
def assert_invalid(record)
|
79
|
+
assert !record.valid?
|
80
|
+
end
|
54
81
|
end
|
@@ -4,19 +4,7 @@ $:.unshift(File.dirname(__FILE__) + '/../..')
|
|
4
4
|
$:.unshift(File.dirname(__FILE__) + '/../../lib')
|
5
5
|
schema_file = File.join(File.dirname(__FILE__), '..', 'schema.rb')
|
6
6
|
|
7
|
-
require '
|
8
|
-
require 'test/unit'
|
9
|
-
|
10
|
-
require 'active_support'
|
11
|
-
require 'active_support/test_case'
|
12
|
-
require 'active_record'
|
13
|
-
require 'active_record/fixtures'
|
14
|
-
require 'action_controller'
|
15
|
-
require 'action_controller/test_case'
|
16
|
-
require 'action_controller/test_process'
|
17
|
-
require 'action_controller/integration'
|
18
|
-
require 'sqlite3'
|
19
|
-
|
7
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
20
8
|
require File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'restfulx')
|
21
9
|
|
22
10
|
config = YAML::load(IO.read(File.join(File.dirname(__FILE__), '..', 'database.yml')))[ENV['DB'] || 'test']
|
@@ -25,5 +13,5 @@ ActiveRecord::Base.establish_connection(config)
|
|
25
13
|
|
26
14
|
load(schema_file) if File.exist?(schema_file)
|
27
15
|
|
28
|
-
ActiveSupport::TestCase.fixture_path
|
29
|
-
$:.unshift(ActiveSupport::TestCase.fixture_path
|
16
|
+
ActiveSupport::TestCase.fixture_path = File.join(File.dirname(__FILE__), '..', 'fixtures')
|
17
|
+
$:.unshift(ActiveSupport::TestCase.fixture_path)
|
@@ -3,34 +3,30 @@ require File.join(File.dirname(__FILE__), 'helpers', 'test_helper')
|
|
3
3
|
require File.join(File.dirname(__FILE__), 'helpers', 'unit_test_helper')
|
4
4
|
|
5
5
|
class ActiveFooTest < ActiveRecord::TestCase
|
6
|
-
fixtures :
|
7
|
-
|
8
|
-
def setup
|
9
|
-
@shakespeare = users(:shakespeare)
|
10
|
-
end
|
6
|
+
fixtures :users, :tasks
|
11
7
|
|
12
8
|
def test_user_fxml
|
13
|
-
set_response_to users(:
|
9
|
+
set_response_to users(:user_1).to_fxml
|
14
10
|
assert_xml_select 'user'
|
15
11
|
end
|
16
12
|
|
17
|
-
def test_task_fxml_has_default_method
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
13
|
+
# def test_task_fxml_has_default_method
|
14
|
+
# set_response_to tasks(:task_one_1).to_fxml(:methods => :is_active)
|
15
|
+
# assert_xml_select 'task is_active'
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# def test_user_fxml_includes_tasks
|
19
|
+
# set_response_to users(:user_1).to_fxml(:include => :tasks)
|
20
|
+
# assert_xml_select 'user tasks task'
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# def test_user_fxml_has_nothing_to_do_method
|
24
|
+
# set_response_to users(:user_1).to_fxml(:methods => :has_nothing_to_do)
|
25
|
+
# assert_xml_select 'user has_nothing_to_do'
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# def test_user_fxml_includes_default_method_from_task
|
29
|
+
# set_response_to users(:user_1).to_fxml(:methods => :is_active, :include => :tasks)
|
30
|
+
# assert_xml_select 'user tasks task is_active'
|
31
|
+
# end
|
36
32
|
end
|
data/test/rails/{test_rails_integration_functional.rb → test_notes_controller_functional.rb}
RENAMED
@@ -5,7 +5,7 @@ ActionController::Routing::Routes.draw do |map|
|
|
5
5
|
map.connect ':controller/:action/:id'
|
6
6
|
end
|
7
7
|
|
8
|
-
class
|
8
|
+
class NotesControllerFunctionalTest < ActionController::TestCase
|
9
9
|
fixtures :all
|
10
10
|
|
11
11
|
def setup
|
@@ -14,9 +14,9 @@ class RailsIntegrationFunctionalTest < ActiveRecord::TestCase
|
|
14
14
|
@response = ActionController::TestResponse.new
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
def test_render_with_an_empty_params_hash_should_not_blow_up
|
18
|
+
get :index
|
19
|
+
assert_response :success
|
20
|
+
end
|
21
21
|
|
22
22
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'helpers/unit_test_helper'
|
4
|
+
require 'helpers/performance_test_helper'
|
5
|
+
|
6
|
+
class SerializationPerformanceTest < ActionController::PerformanceTest
|
7
|
+
fixtures :users
|
8
|
+
|
9
|
+
def test_all_to_fxml
|
10
|
+
users.to_fxml
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_one_to_fxml
|
14
|
+
users(:user_1).to_fxml
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_all_to_json
|
18
|
+
users.to_json
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_one_to_json
|
22
|
+
users(:user_1).to_json
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_all_to_amf
|
26
|
+
users.to_amf
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_one_to_amf
|
30
|
+
users(:user_1).to_amf
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'helpers/unit_test_helper'
|
4
|
+
require 'ruby-prof'
|
5
|
+
require 'perftools'
|
6
|
+
|
7
|
+
class ToAMFTest < ActiveRecord::TestCase
|
8
|
+
fixtures :users
|
9
|
+
|
10
|
+
def test_to_amf_sanity
|
11
|
+
assert_nothing_raised { users(:user_1).to_amf }
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_ruby_profile_all_to_amf
|
15
|
+
ruby_profile { users.to_amf }
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_perftools_all_to_amf
|
19
|
+
PerfTools::CpuProfiler.start("/tmp/to_amf") { users.to_amf }
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def ruby_profile
|
24
|
+
RubyProf.start
|
25
|
+
yield
|
26
|
+
result = RubyProf.stop
|
27
|
+
printer = RubyProf::GraphPrinter.new(result)
|
28
|
+
printer.print(STDOUT, 0)
|
29
|
+
end
|
30
|
+
end
|