restfulie 1.0.0 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +20 -0
- data/.gitmodules +3 -0
- data/.rspec +2 -0
- data/Rakefile +9 -41
- data/full-examples/.gitignore +4 -0
- data/full-examples/README.textile +1 -0
- data/full-examples/mikemaze/README.textile +6 -0
- data/full-examples/mikemaze/maze_basic.rb +37 -0
- data/full-examples/mikemaze/maze_solver_spec.rb +108 -0
- data/full-examples/rest_from_scratch/part_1/.gitignore +4 -0
- data/full-examples/rest_from_scratch/part_1/.rspec +1 -0
- data/full-examples/rest_from_scratch/part_1/Gemfile +33 -0
- data/full-examples/rest_from_scratch/part_1/README +256 -0
- data/full-examples/rest_from_scratch/part_1/Rakefile +7 -0
- data/full-examples/rest_from_scratch/part_1/app/controllers/application_controller.rb +3 -0
- data/full-examples/rest_from_scratch/part_1/app/controllers/items_controller.rb +20 -0
- data/full-examples/rest_from_scratch/part_1/app/helpers/application_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_1/app/helpers/items_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_1/app/models/item.rb +2 -0
- data/full-examples/rest_from_scratch/part_1/app/views/items/_form.html.erb +25 -0
- data/full-examples/rest_from_scratch/part_1/app/views/items/edit.html.erb +6 -0
- data/full-examples/rest_from_scratch/part_1/app/views/items/index.html.erb +25 -0
- data/full-examples/rest_from_scratch/part_1/app/views/items/new.html.erb +5 -0
- data/full-examples/rest_from_scratch/part_1/app/views/items/show.html.erb +15 -0
- data/full-examples/rest_from_scratch/part_1/app/views/layouts/application.html.erb +14 -0
- data/full-examples/rest_from_scratch/part_1/autotest/discover.rb +1 -0
- data/full-examples/rest_from_scratch/part_1/config.ru +4 -0
- data/full-examples/rest_from_scratch/part_1/config/application.rb +42 -0
- data/full-examples/rest_from_scratch/part_1/config/boot.rb +13 -0
- data/full-examples/rest_from_scratch/part_1/config/database.yml +22 -0
- data/full-examples/rest_from_scratch/part_1/config/environment.rb +5 -0
- data/full-examples/rest_from_scratch/part_1/config/environments/development.rb +26 -0
- data/full-examples/rest_from_scratch/part_1/config/environments/production.rb +49 -0
- data/full-examples/rest_from_scratch/part_1/config/environments/test.rb +35 -0
- data/full-examples/rest_from_scratch/part_1/config/initializers/backtrace_silencers.rb +7 -0
- data/full-examples/rest_from_scratch/part_1/config/initializers/inflections.rb +10 -0
- data/full-examples/rest_from_scratch/part_1/config/initializers/mime_types.rb +5 -0
- data/full-examples/rest_from_scratch/part_1/config/initializers/secret_token.rb +7 -0
- data/full-examples/rest_from_scratch/part_1/config/initializers/session_store.rb +8 -0
- data/full-examples/rest_from_scratch/part_1/config/locales/en.yml +5 -0
- data/full-examples/rest_from_scratch/part_1/config/routes.rb +60 -0
- data/full-examples/rest_from_scratch/part_1/db/migrate/20100830171258_create_items.rb +14 -0
- data/full-examples/rest_from_scratch/part_1/db/schema.rb +22 -0
- data/full-examples/rest_from_scratch/part_1/db/seeds.rb +7 -0
- data/full-examples/rest_from_scratch/part_1/lib/tasks/.gitkeep +0 -0
- data/full-examples/rest_from_scratch/part_1/public/404.html +26 -0
- data/full-examples/rest_from_scratch/part_1/public/422.html +26 -0
- data/full-examples/rest_from_scratch/part_1/public/500.html +26 -0
- data/full-examples/rest_from_scratch/part_1/public/favicon.ico +0 -0
- data/full-examples/rest_from_scratch/part_1/public/images/rails.png +0 -0
- data/full-examples/rest_from_scratch/part_1/public/index.html +239 -0
- data/full-examples/rest_from_scratch/part_1/public/javascripts/application.js +2 -0
- data/full-examples/rest_from_scratch/part_1/public/javascripts/controls.js +965 -0
- data/full-examples/rest_from_scratch/part_1/public/javascripts/dragdrop.js +974 -0
- data/full-examples/rest_from_scratch/part_1/public/javascripts/effects.js +1123 -0
- data/full-examples/rest_from_scratch/part_1/public/javascripts/prototype.js +6001 -0
- data/full-examples/rest_from_scratch/part_1/public/javascripts/rails.js +175 -0
- data/full-examples/rest_from_scratch/part_1/public/robots.txt +5 -0
- data/full-examples/rest_from_scratch/part_1/public/stylesheets/.gitkeep +0 -0
- data/full-examples/rest_from_scratch/part_1/public/stylesheets/scaffold.css +56 -0
- data/full-examples/rest_from_scratch/part_1/script/rails +6 -0
- data/full-examples/rest_from_scratch/part_1/spec/items_spec.rb +31 -0
- data/full-examples/rest_from_scratch/part_1/spec/spec_helper.rb +27 -0
- data/full-examples/rest_from_scratch/part_1/test/fixtures/items.yml +9 -0
- data/full-examples/rest_from_scratch/part_1/test/functional/items_controller_test.rb +49 -0
- data/full-examples/rest_from_scratch/part_1/test/performance/browsing_test.rb +9 -0
- data/full-examples/rest_from_scratch/part_1/test/test_helper.rb +13 -0
- data/full-examples/rest_from_scratch/part_1/test/unit/helpers/items_helper_test.rb +4 -0
- data/full-examples/rest_from_scratch/part_1/test/unit/item_test.rb +8 -0
- data/full-examples/rest_from_scratch/part_1/vendor/plugins/.gitkeep +0 -0
- data/full-examples/rest_from_scratch/part_2/.gitignore +4 -0
- data/full-examples/rest_from_scratch/part_2/.rspec +1 -0
- data/full-examples/rest_from_scratch/part_2/Gemfile +34 -0
- data/full-examples/rest_from_scratch/part_2/README +256 -0
- data/full-examples/rest_from_scratch/part_2/Rakefile +7 -0
- data/full-examples/rest_from_scratch/part_2/app/controllers/application_controller.rb +3 -0
- data/full-examples/rest_from_scratch/part_2/app/controllers/baskets_controller.rb +25 -0
- data/full-examples/rest_from_scratch/part_2/app/controllers/items_controller.rb +20 -0
- data/full-examples/rest_from_scratch/part_2/app/controllers/payments_controller.rb +17 -0
- data/full-examples/rest_from_scratch/part_2/app/helpers/application_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_2/app/helpers/baskets_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_2/app/helpers/items_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_2/app/helpers/payments_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_2/app/models/basket.rb +11 -0
- data/full-examples/rest_from_scratch/part_2/app/models/item.rb +2 -0
- data/full-examples/rest_from_scratch/part_2/app/models/payment.rb +3 -0
- data/full-examples/rest_from_scratch/part_2/app/views/baskets/show.tokamak +9 -0
- data/full-examples/rest_from_scratch/part_2/app/views/items/_show.tokamak +6 -0
- data/full-examples/rest_from_scratch/part_2/app/views/items/index.tokamak +14 -0
- data/full-examples/rest_from_scratch/part_2/app/views/layouts/application.html.erb +14 -0
- data/full-examples/rest_from_scratch/part_2/autotest/discover.rb +1 -0
- data/full-examples/rest_from_scratch/part_2/config.ru +4 -0
- data/full-examples/rest_from_scratch/part_2/config/application.rb +42 -0
- data/full-examples/rest_from_scratch/part_2/config/boot.rb +13 -0
- data/full-examples/rest_from_scratch/part_2/config/database.yml +22 -0
- data/full-examples/rest_from_scratch/part_2/config/environment.rb +5 -0
- data/full-examples/rest_from_scratch/part_2/config/environments/development.rb +26 -0
- data/full-examples/rest_from_scratch/part_2/config/environments/production.rb +49 -0
- data/full-examples/rest_from_scratch/part_2/config/environments/test.rb +35 -0
- data/full-examples/rest_from_scratch/part_2/config/initializers/backtrace_silencers.rb +7 -0
- data/full-examples/rest_from_scratch/part_2/config/initializers/inflections.rb +10 -0
- data/full-examples/rest_from_scratch/part_2/config/initializers/mime_types.rb +5 -0
- data/full-examples/rest_from_scratch/part_2/config/initializers/secret_token.rb +7 -0
- data/full-examples/rest_from_scratch/part_2/config/initializers/session_store.rb +8 -0
- data/full-examples/rest_from_scratch/part_2/config/locales/en.yml +5 -0
- data/full-examples/rest_from_scratch/part_2/config/routes.rb +65 -0
- data/full-examples/rest_from_scratch/part_2/db/migrate/20100830171258_create_items.rb +16 -0
- data/full-examples/rest_from_scratch/part_2/db/migrate/20100830180139_create_baskets.rb +12 -0
- data/full-examples/rest_from_scratch/part_2/db/migrate/20100830180203_create_payments.rb +16 -0
- data/full-examples/rest_from_scratch/part_2/db/migrate/20100830185456_connect_baskets_to_items.rb +13 -0
- data/full-examples/rest_from_scratch/part_2/db/schema.rb +43 -0
- data/full-examples/rest_from_scratch/part_2/db/seeds.rb +7 -0
- data/full-examples/rest_from_scratch/part_2/lib/tasks/.gitkeep +0 -0
- data/full-examples/rest_from_scratch/part_2/public/404.html +26 -0
- data/full-examples/rest_from_scratch/part_2/public/422.html +26 -0
- data/full-examples/rest_from_scratch/part_2/public/500.html +26 -0
- data/full-examples/rest_from_scratch/part_2/public/favicon.ico +0 -0
- data/full-examples/rest_from_scratch/part_2/public/images/rails.png +0 -0
- data/full-examples/rest_from_scratch/part_2/public/index.html +239 -0
- data/full-examples/rest_from_scratch/part_2/public/javascripts/application.js +2 -0
- data/full-examples/rest_from_scratch/part_2/public/javascripts/controls.js +965 -0
- data/full-examples/rest_from_scratch/part_2/public/javascripts/dragdrop.js +974 -0
- data/full-examples/rest_from_scratch/part_2/public/javascripts/effects.js +1123 -0
- data/full-examples/rest_from_scratch/part_2/public/javascripts/prototype.js +6001 -0
- data/full-examples/rest_from_scratch/part_2/public/javascripts/rails.js +175 -0
- data/full-examples/rest_from_scratch/part_2/public/robots.txt +5 -0
- data/full-examples/rest_from_scratch/part_2/public/stylesheets/.gitkeep +0 -0
- data/full-examples/rest_from_scratch/part_2/public/stylesheets/scaffold.css +56 -0
- data/full-examples/rest_from_scratch/part_2/script/rails +6 -0
- data/full-examples/rest_from_scratch/part_2/spec/full_cycle_spec.rb +31 -0
- data/full-examples/rest_from_scratch/part_2/spec/items_spec.rb +31 -0
- data/full-examples/rest_from_scratch/part_2/spec/spec_helper.rb +27 -0
- data/full-examples/rest_from_scratch/part_2/test/fixtures/items.yml +9 -0
- data/full-examples/rest_from_scratch/part_2/test/functional/items_controller_test.rb +49 -0
- data/full-examples/rest_from_scratch/part_2/test/performance/browsing_test.rb +9 -0
- data/full-examples/rest_from_scratch/part_2/test/test_helper.rb +13 -0
- data/full-examples/rest_from_scratch/part_2/test/unit/helpers/items_helper_test.rb +4 -0
- data/full-examples/rest_from_scratch/part_2/test/unit/item_test.rb +8 -0
- data/full-examples/rest_from_scratch/part_2/vendor/plugins/.gitkeep +0 -0
- data/full-examples/rest_from_scratch/part_3/.gitignore +4 -0
- data/full-examples/rest_from_scratch/part_3/.rspec +1 -0
- data/full-examples/rest_from_scratch/part_3/Gemfile +33 -0
- data/full-examples/rest_from_scratch/part_3/README +256 -0
- data/full-examples/rest_from_scratch/part_3/Rakefile +7 -0
- data/full-examples/rest_from_scratch/part_3/app/controllers/application_controller.rb +3 -0
- data/full-examples/rest_from_scratch/part_3/app/controllers/baskets_controller.rb +34 -0
- data/full-examples/rest_from_scratch/part_3/app/controllers/items_controller.rb +20 -0
- data/full-examples/rest_from_scratch/part_3/app/controllers/payments_controller.rb +17 -0
- data/full-examples/rest_from_scratch/part_3/app/helpers/application_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_3/app/helpers/baskets_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_3/app/helpers/items_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_3/app/helpers/payments_helper.rb +2 -0
- data/full-examples/rest_from_scratch/part_3/app/models/basket.rb +11 -0
- data/full-examples/rest_from_scratch/part_3/app/models/item.rb +2 -0
- data/full-examples/rest_from_scratch/part_3/app/models/payment.rb +3 -0
- data/full-examples/rest_from_scratch/part_3/app/views/baskets/show.tokamak +9 -0
- data/full-examples/rest_from_scratch/part_3/app/views/items/_show.tokamak +6 -0
- data/full-examples/rest_from_scratch/part_3/app/views/items/index.tokamak +14 -0
- data/full-examples/rest_from_scratch/part_3/app/views/layouts/application.html.erb +14 -0
- data/full-examples/rest_from_scratch/part_3/autotest/discover.rb +1 -0
- data/full-examples/rest_from_scratch/part_3/config.ru +4 -0
- data/full-examples/rest_from_scratch/part_3/config/application.rb +42 -0
- data/full-examples/rest_from_scratch/part_3/config/boot.rb +13 -0
- data/full-examples/rest_from_scratch/part_3/config/database.yml +22 -0
- data/full-examples/rest_from_scratch/part_3/config/environment.rb +5 -0
- data/full-examples/rest_from_scratch/part_3/config/environments/development.rb +26 -0
- data/full-examples/rest_from_scratch/part_3/config/environments/production.rb +49 -0
- data/full-examples/rest_from_scratch/part_3/config/environments/test.rb +35 -0
- data/full-examples/rest_from_scratch/part_3/config/initializers/backtrace_silencers.rb +7 -0
- data/full-examples/rest_from_scratch/part_3/config/initializers/inflections.rb +10 -0
- data/full-examples/rest_from_scratch/part_3/config/initializers/mime_types.rb +5 -0
- data/full-examples/rest_from_scratch/part_3/config/initializers/secret_token.rb +7 -0
- data/full-examples/rest_from_scratch/part_3/config/initializers/session_store.rb +8 -0
- data/full-examples/rest_from_scratch/part_3/config/locales/en.yml +5 -0
- data/full-examples/rest_from_scratch/part_3/config/routes.rb +67 -0
- data/full-examples/rest_from_scratch/part_3/db/migrate/20100830171258_create_items.rb +16 -0
- data/full-examples/rest_from_scratch/part_3/db/migrate/20100830180139_create_baskets.rb +12 -0
- data/full-examples/rest_from_scratch/part_3/db/migrate/20100830180203_create_payments.rb +16 -0
- data/full-examples/rest_from_scratch/part_3/db/migrate/20100830185456_connect_baskets_to_items.rb +13 -0
- data/full-examples/rest_from_scratch/part_3/db/schema.rb +43 -0
- data/full-examples/rest_from_scratch/part_3/db/seeds.rb +7 -0
- data/full-examples/rest_from_scratch/part_3/lib/tasks/.gitkeep +0 -0
- data/full-examples/rest_from_scratch/part_3/public/404.html +26 -0
- data/full-examples/rest_from_scratch/part_3/public/422.html +26 -0
- data/full-examples/rest_from_scratch/part_3/public/500.html +26 -0
- data/full-examples/rest_from_scratch/part_3/public/favicon.ico +0 -0
- data/full-examples/rest_from_scratch/part_3/public/images/rails.png +0 -0
- data/full-examples/rest_from_scratch/part_3/public/index.html +239 -0
- data/full-examples/rest_from_scratch/part_3/public/javascripts/application.js +2 -0
- data/full-examples/rest_from_scratch/part_3/public/javascripts/controls.js +965 -0
- data/full-examples/rest_from_scratch/part_3/public/javascripts/dragdrop.js +974 -0
- data/full-examples/rest_from_scratch/part_3/public/javascripts/effects.js +1123 -0
- data/full-examples/rest_from_scratch/part_3/public/javascripts/prototype.js +6001 -0
- data/full-examples/rest_from_scratch/part_3/public/javascripts/rails.js +175 -0
- data/full-examples/rest_from_scratch/part_3/public/robots.txt +5 -0
- data/full-examples/rest_from_scratch/part_3/public/stylesheets/.gitkeep +0 -0
- data/full-examples/rest_from_scratch/part_3/public/stylesheets/scaffold.css +56 -0
- data/full-examples/rest_from_scratch/part_3/script/rails +6 -0
- data/full-examples/rest_from_scratch/part_3/spec/buying_process_spec.rb +24 -0
- data/full-examples/rest_from_scratch/part_3/spec/client/buying_process.rb +23 -0
- data/full-examples/rest_from_scratch/part_3/spec/client/scenarios/buying_process.scenario +15 -0
- data/full-examples/rest_from_scratch/part_3/spec/client/steps/buying_process.rb +56 -0
- data/full-examples/rest_from_scratch/part_3/spec/full_cycle_spec.rb +30 -0
- data/full-examples/rest_from_scratch/part_3/spec/items_spec.rb +31 -0
- data/full-examples/rest_from_scratch/part_3/spec/spec_helper.rb +27 -0
- data/full-examples/rest_from_scratch/part_3/test/fixtures/items.yml +9 -0
- data/full-examples/rest_from_scratch/part_3/test/functional/items_controller_test.rb +49 -0
- data/full-examples/rest_from_scratch/part_3/test/performance/browsing_test.rb +9 -0
- data/full-examples/rest_from_scratch/part_3/test/test_helper.rb +13 -0
- data/full-examples/rest_from_scratch/part_3/test/unit/helpers/items_helper_test.rb +4 -0
- data/full-examples/rest_from_scratch/part_3/test/unit/item_test.rb +8 -0
- data/full-examples/rest_from_scratch/part_3/vendor/plugins/.gitkeep +0 -0
- data/init.rb +1 -0
- data/lib/restfulie/client/README.textile +33 -0
- data/lib/restfulie/client/feature/fake_response.rb +13 -0
- data/lib/restfulie/client/feature/follow_request.rb +29 -11
- data/lib/restfulie/client/feature/{throw_error.rb → throw_error_request.rb} +3 -2
- data/lib/restfulie/client/feature/verb.rb +12 -19
- data/lib/restfulie/common.rb +1 -1
- data/lib/restfulie/server.rb +1 -1
- data/lib/restfulie/server/action_controller/base.rb +0 -2
- data/lib/restfulie/server/action_controller/restful_responder.rb +2 -2
- data/lib/restfulie/server/action_controller/trait/cacheable.rb +22 -9
- data/lib/restfulie/server/hypertemplate.rb +3 -0
- data/lib/restfulie/version.rb +2 -2
- data/restfulie.gemspec +42 -0
- data/script/console +8 -0
- data/site/README +1 -0
- data/site/Rakefile +10 -0
- data/site/app/controllers/application_controller.rb +11 -0
- data/site/app/controllers/java_controller.rb +53 -0
- data/site/app/controllers/javascript_controller.rb +12 -0
- data/site/app/controllers/restful_csharp_controller.rb +12 -0
- data/site/app/controllers/ruby_controller.rb +24 -0
- data/site/app/controllers/systems_controller.rb +14 -0
- data/site/app/helpers/application_helper.rb +10 -0
- data/site/app/helpers/documentation_helper.rb +2 -0
- data/site/app/views/java/features.html.erb +99 -0
- data/site/app/views/java/hypermedia.html.erb +97 -0
- data/site/app/views/java/server.html.erb +0 -0
- data/site/app/views/layouts/_blackmenu.html.erb +11 -0
- data/site/app/views/layouts/_uppermenu.html.erb +24 -0
- data/site/app/views/layouts/application.html.erb +50 -0
- data/site/app/views/layouts/java.html.erb +72 -0
- data/site/app/views/layouts/javascript.html.erb +62 -0
- data/site/app/views/layouts/restful_csharp.html.erb +81 -0
- data/site/app/views/layouts/restful_java.html.erb +87 -0
- data/site/app/views/shared/_examples.html.erb +29 -0
- data/site/app/views/shared/_negotiation.html.erb +9 -0
- data/site/app/views/shared/_simple_representation.html.erb +37 -0
- data/site/app/views/systems/features.html.erb +106 -0
- data/site/app/views/systems/index.html.erb +97 -0
- data/site/app/views/systems/support.html.erb +54 -0
- data/site/config/boot.rb +110 -0
- data/site/config/database.yml +22 -0
- data/site/config/environments/development.rb +17 -0
- data/site/config/environments/production.rb +28 -0
- data/site/config/environments/test.rb +28 -0
- data/site/config/initializers/backtrace_silencers.rb +7 -0
- data/site/config/initializers/inflections.rb +10 -0
- data/site/config/initializers/mime_types.rb +5 -0
- data/site/config/initializers/new_rails_defaults.rb +21 -0
- data/site/config/initializers/session_store.rb +15 -0
- data/site/config/locales/en.yml +5 -0
- data/site/config/routes.rb +56 -0
- data/site/db/seeds.rb +7 -0
- data/site/public/404.html +30 -0
- data/site/public/422.html +30 -0
- data/site/public/500.html +30 -0
- data/site/public/caelumobjects-restful-rails.pdf +0 -0
- data/site/public/docs.html +164 -0
- data/site/public/favicon.ico +0 -0
- data/site/public/images/bgBarHome-trans.png +0 -0
- data/site/public/images/bgHeader.png +0 -0
- data/site/public/images/bgSubMenu-trans.png +0 -0
- data/site/public/images/code_java_01.png +0 -0
- data/site/public/images/code_java_02.png +0 -0
- data/site/public/images/code_net_01.png +0 -0
- data/site/public/images/code_net_02.png +0 -0
- data/site/public/images/code_ruby_01.png +0 -0
- data/site/public/images/code_ruby_02.png +0 -0
- data/site/public/images/dependency.png +0 -0
- data/site/public/images/ldl-trans.png +0 -0
- data/site/public/images/leftBGBtn.png +0 -0
- data/site/public/images/logoCaelumGray-trans.png +0 -0
- data/site/public/images/negotiation.png +0 -0
- data/site/public/images/rails.png +0 -0
- data/site/public/images/restfulieSprites-trans.png +0 -0
- data/site/public/images/rightBGBtn.png +0 -0
- data/site/public/images/service.png +0 -0
- data/site/public/images/subMenuBottom-trans.png +0 -0
- data/site/public/images/subMenuTop-trans.png +0 -0
- data/site/public/javascripts/application.js +2 -0
- data/site/public/javascripts/controls.js +963 -0
- data/site/public/javascripts/dragdrop.js +973 -0
- data/site/public/javascripts/effects.js +1128 -0
- data/site/public/javascripts/prototype.js +4320 -0
- data/site/public/robots.txt +5 -0
- data/site/public/stylesheets/menu.css +98 -0
- data/site/public/stylesheets/screen.css +345 -0
- data/site/public/stylesheets/uppermenu.css +87 -0
- data/site/script/about +4 -0
- data/site/script/console +3 -0
- data/site/script/dbconsole +3 -0
- data/site/script/destroy +3 -0
- data/site/script/generate +3 -0
- data/site/script/performance/benchmarker +3 -0
- data/site/script/performance/profiler +3 -0
- data/site/script/plugin +3 -0
- data/site/script/runner +3 -0
- data/site/script/server +3 -0
- data/site/test/functional/documentation_controller_test.rb +8 -0
- data/site/test/performance/browsing_test.rb +9 -0
- data/site/test/test_helper.rb +38 -0
- data/site/test/unit/helpers/documentation_helper_test.rb +4 -0
- data/spec/integration/twitter.rb +945 -0
- data/spec/integration/twitter_spec.rb +24 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/unit/client/base_spec.rb +9 -0
- data/spec/unit/client/cache/fake_spec.rb +23 -0
- data/spec/unit/client/cache/http_ext_spec.rb +182 -0
- data/spec/unit/client/cache/restrictions_spec.rb +24 -0
- data/spec/unit/client/configuration_spec.rb +54 -0
- data/spec/unit/client/ext/open_search_spec.rb +28 -0
- data/spec/unit/client/feature/conneg_when_unaccepted_spec.rb +45 -0
- data/spec/unit/client/feature/open_search/pattern_matcher_spec.rb +21 -0
- data/spec/unit/client/feature/rescue_exception_spec.rb +27 -0
- data/spec/unit/client/feature/retry_when_unavailable_spec.rb +38 -0
- data/spec/unit/client/feature/verb_spec.rb +37 -0
- data/spec/unit/client/http/link_header_spec.rb +43 -0
- data/spec/unit/client/mikyung/concatenator_spec.rb +14 -0
- data/spec/unit/client/mikyung/rest_process_model_spec.rb +140 -0
- data/spec/unit/client/mikyung/steady_state_walker_spec.rb +39 -0
- data/spec/unit/client/mikyung/then_condition_spec.rb +38 -0
- data/spec/unit/client/mikyung/when_condition_spec.rb +59 -0
- data/spec/unit/client/mikyung_spec.rb +72 -0
- data/spec/unit/client/stack_navigator.rb +75 -0
- data/spec/unit/common/errors_spec.rb +33 -0
- data/spec/unit/restfulie_spec.rb +30 -0
- data/spec/unit/server/action_controller/trait/cacheable_spec.rb +48 -0
- data/spec/unit/server/action_controller/trait/created_spec.rb +50 -0
- data/spec/unit/server/configuration_spec.rb +36 -0
- data/spec/unit/server/core_ext/array_spec.rb +35 -0
- data/spec/unit/server/restfulie_controller_spec.rb +110 -0
- data/spec/unit/spec_helper.rb +1 -0
- data/tests/.gitignore +5 -0
- data/tests/.rspec +1 -0
- data/tests/Gemfile +42 -0
- data/tests/README +256 -0
- data/tests/Rakefile +7 -0
- data/tests/app/controllers/albums_controller.rb +10 -0
- data/tests/app/controllers/application_controller.rb +3 -0
- data/tests/app/controllers/artists_controller.rb +12 -0
- data/tests/app/controllers/cacheable_songs_controller.rb +28 -0
- data/tests/app/controllers/projects_controller.rb +13 -0
- data/tests/app/controllers/render_controller.rb +15 -0
- data/tests/app/controllers/songs_controller.rb +2 -0
- data/tests/app/helpers/albums_helper.rb +2 -0
- data/tests/app/helpers/application_helper.rb +2 -0
- data/tests/app/helpers/artists_helper.rb +2 -0
- data/tests/app/helpers/cacheable_clients_helper.rb +2 -0
- data/tests/app/helpers/projects_helper.rb +2 -0
- data/tests/app/helpers/render_helper.rb +2 -0
- data/tests/app/helpers/songs_helper.rb +2 -0
- data/tests/app/models/album.rb +4 -0
- data/tests/app/models/artist.rb +2 -0
- data/tests/app/models/song.rb +3 -0
- data/tests/app/views/albums/_member.tokamak +11 -0
- data/tests/app/views/albums/index.tokamak +26 -0
- data/tests/app/views/albums/show.tokamak +3 -0
- data/tests/app/views/artists/_form.html.erb +25 -0
- data/tests/app/views/artists/edit.html.erb +6 -0
- data/tests/app/views/artists/index.html.erb +25 -0
- data/tests/app/views/artists/new.html.erb +5 -0
- data/tests/app/views/artists/show.html.erb +15 -0
- data/tests/app/views/cacheable_clients/collection.tokamak +0 -0
- data/tests/app/views/cacheable_clients/empty.tokamak +0 -0
- data/tests/app/views/cacheable_clients/single.tokamak +0 -0
- data/tests/app/views/layouts/application.html.erb +14 -0
- data/tests/app/views/projects/index.atom.tokamak +14 -0
- data/tests/app/views/projects/new.atom.tokamak +7 -0
- data/tests/app/views/projects/new.tokamak +0 -0
- data/tests/app/views/projects/show.tokamak +7 -0
- data/tests/autotest/discover.rb +2 -0
- data/tests/config.ru +4 -0
- data/tests/config/application.rb +42 -0
- data/tests/config/boot.rb +13 -0
- data/tests/config/database.yml +22 -0
- data/tests/config/environment.rb +5 -0
- data/tests/config/environments/development.rb +22 -0
- data/tests/config/environments/production.rb +49 -0
- data/tests/config/environments/test.rb +35 -0
- data/tests/config/initializers/backtrace_silencers.rb +7 -0
- data/tests/config/initializers/inflections.rb +10 -0
- data/tests/config/initializers/mime_types.rb +5 -0
- data/tests/config/initializers/secret_token.rb +7 -0
- data/tests/config/initializers/session_store.rb +8 -0
- data/tests/config/locales/en.yml +5 -0
- data/tests/config/routes.rb +66 -0
- data/tests/db/migrate/20100817165415_create_albums.rb +15 -0
- data/tests/db/migrate/20100817165436_create_songs.rb +16 -0
- data/tests/db/migrate/20100819165238_create_artists.rb +14 -0
- data/tests/db/schema.rb +39 -0
- data/tests/db/seeds.rb +7 -0
- data/tests/lib/tasks/.gitkeep +0 -0
- data/tests/public/404.html +26 -0
- data/tests/public/422.html +26 -0
- data/tests/public/500.html +26 -0
- data/tests/public/favicon.ico +0 -0
- data/tests/public/images/rails.png +0 -0
- data/tests/public/index.html +262 -0
- data/tests/public/javascripts/application.js +2 -0
- data/tests/public/javascripts/controls.js +965 -0
- data/tests/public/javascripts/dragdrop.js +974 -0
- data/tests/public/javascripts/effects.js +1123 -0
- data/tests/public/javascripts/prototype.js +6001 -0
- data/tests/public/javascripts/rails.js +175 -0
- data/tests/public/robots.txt +5 -0
- data/tests/public/stylesheets/.gitkeep +0 -0
- data/tests/public/stylesheets/scaffold.css +56 -0
- data/tests/script/rails +6 -0
- data/tests/spec/controllers/integration/albums_controller_spec.rb +60 -0
- data/tests/spec/controllers/integration/cacheable_songs_controller_spec.rb +43 -0
- data/tests/spec/controllers/integration/controller_base_spec.rb +35 -0
- data/tests/spec/controllers/integration/created_responder_spec.rb +35 -0
- data/tests/spec/controllers/integration/params_parser_spec.rb +150 -0
- data/tests/spec/controllers/integration/projects_controller_spec.rb +30 -0
- data/tests/spec/requests/_integration_client.txt +1 -0
- data/tests/spec/requests/base_spec.rb2 +142 -0
- data/tests/spec/requests/fake_server.rb +107 -0
- data/tests/spec/requests/http/adapter_spec.rb +105 -0
- data/tests/spec/requests/http/content_type_spec.rb +88 -0
- data/tests/spec/requests/http/errors_spec.rb +130 -0
- data/tests/spec/requests/http/history_spec.rb +56 -0
- data/tests/spec/requests/http/marshal_spec.rb2 +113 -0
- data/tests/spec/requests/http/parameters_spec.rb +12 -0
- data/tests/spec/spec.opts +5 -0
- data/tests/spec/spec_helper.rb +61 -0
- data/tests/spec/support/atoms/full.rb.txt +63 -0
- data/tests/spec/support/atoms/related_songs +30 -0
- data/tests/spec/support/atoms/song_1 +11 -0
- data/tests/spec/support/atoms/song_2 +11 -0
- data/tests/spec/support/atoms/song_3 +11 -0
- data/tests/spec/support/atoms/song_4 +11 -0
- data/tests/spec/support/atoms/songs +51 -0
- data/tests/spec/support/atoms/songs_top_ten +27 -0
- data/tests/spec/support/data_helper.rb +13 -0
- data/tests/test/performance/browsing_test.rb +9 -0
- data/tests/test/test_helper.rb +13 -0
- data/tests/vendor/plugins/.gitkeep +0 -0
- metadata +534 -97
- data/lib/restfulie/server/tokamak.rb +0 -6
data/script/console
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# File: script/console
|
3
|
+
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
+
|
5
|
+
libs = " -r irb/completion"
|
6
|
+
libs << " -r #{File.dirname(__FILE__) + '/../lib/restfulie.rb'}"
|
7
|
+
puts "Loading Restfulie env"
|
8
|
+
exec "#{irb} #{libs} --simple-prompt #{ARGV.join("")}"
|
data/site/README
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Restfulie's website at http://www.caelumobjects.com/restfulie
|
data/site/Rakefile
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
|
+
|
4
|
+
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
|
5
|
+
|
6
|
+
require 'rake'
|
7
|
+
require 'rake/testtask'
|
8
|
+
require 'rake/rdoctask'
|
9
|
+
|
10
|
+
require 'tasks/rails'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# Filters added to this controller apply to all controllers in the application.
|
2
|
+
# Likewise, all the methods added will be available for all controllers.
|
3
|
+
|
4
|
+
class ApplicationController < ActionController::Base
|
5
|
+
helper :all # include all helpers, all the time
|
6
|
+
protect_from_forgery # See ActionController::RequestForgeryProtection for details
|
7
|
+
|
8
|
+
# Scrub sensitive parameters from your log
|
9
|
+
# filter_parameter_logging :password
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class JavaController < ApplicationController
|
2
|
+
def index
|
3
|
+
render :action => 'basic'
|
4
|
+
end
|
5
|
+
|
6
|
+
def basic
|
7
|
+
end
|
8
|
+
|
9
|
+
def examples
|
10
|
+
end
|
11
|
+
|
12
|
+
def conneg
|
13
|
+
end
|
14
|
+
|
15
|
+
def features
|
16
|
+
end
|
17
|
+
|
18
|
+
def hypermedia
|
19
|
+
end
|
20
|
+
|
21
|
+
def server
|
22
|
+
end
|
23
|
+
|
24
|
+
def rendering_resources
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
#down here
|
29
|
+
#def installing
|
30
|
+
#end
|
31
|
+
#def features
|
32
|
+
#end
|
33
|
+
#def short_samples
|
34
|
+
#end
|
35
|
+
#def server
|
36
|
+
#end
|
37
|
+
#def rendering_resources
|
38
|
+
#end
|
39
|
+
#def server_state_machine
|
40
|
+
#end
|
41
|
+
#def client
|
42
|
+
#end
|
43
|
+
#def help_and_examples
|
44
|
+
#end
|
45
|
+
#def live_examples
|
46
|
+
#end
|
47
|
+
#def team
|
48
|
+
#end
|
49
|
+
#def roadmap
|
50
|
+
#end
|
51
|
+
#def what_is_new
|
52
|
+
#end
|
53
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
<div id="textoCapitulo">
|
2
|
+
<h2>Features</h2>
|
3
|
+
|
4
|
+
<p>Most of the client features can be composed during the request building phase. This means that when invoking Restfulie.at() one can specify which features are supposed to be used and which can be left out, allowing an infinite number of combinations without the need to write extra classes.</p>
|
5
|
+
|
6
|
+
<h2>Request Features<h2>
|
7
|
+
|
8
|
+
<h3>Retrying requests</h3>
|
9
|
+
|
10
|
+
<p>Another characteristic of REST over HTTP is that some requests can be easily retried by adding a new feature to the DSL. The RetryWhenUnavailable feature demonstrates how to use it
|
11
|
+
when the server returns 503. The following code will retry the operation once by using this feature:</p>
|
12
|
+
|
13
|
+
<pre>
|
14
|
+
Response response = Restfulie.at("uri").retryWhenUnavailable().get();
|
15
|
+
</pre>
|
16
|
+
|
17
|
+
<h3>Custom request features</h3>
|
18
|
+
|
19
|
+
<p>It is easy to create your own feature, even with configuration parameters, simply create
|
20
|
+
a class and implemente the interface RequestFeature</p>
|
21
|
+
|
22
|
+
<pre>
|
23
|
+
public class MyFatureRequest implement RequestFeature {
|
24
|
+
|
25
|
+
public Response process(RequestChain chain, Request request, String verb,
|
26
|
+
URI uri, Object payload) {
|
27
|
+
|
28
|
+
//do something before the request is dispatched
|
29
|
+
Response response = chain.next(request, verb, uri, payload);
|
30
|
+
//do someething after the request have been dispatched
|
31
|
+
return response;
|
32
|
+
}
|
33
|
+
|
34
|
+
}
|
35
|
+
</pre>
|
36
|
+
|
37
|
+
<p>After implementing it you just have to pass it so restfulie add it at the stack of features.</p>
|
38
|
+
<pre>
|
39
|
+
//the method features can receive more than one feature
|
40
|
+
Restfulie.at("resource_uri").withFeature(MyFeatureRequest.class).get();
|
41
|
+
</pre>
|
42
|
+
|
43
|
+
<h2>Response Features</h2>
|
44
|
+
|
45
|
+
<h3>Throw error feature</h3>
|
46
|
+
|
47
|
+
<p>A common asked feature is to throw na error in case some specific response codes are returned. There is a sample feature that can be tweaked as required, that raises an exception when 300+ codes are returned. It's name is "ThrowError" and therefore to load it one only has to invoke it in the DSL:
|
48
|
+
|
49
|
+
<pre>
|
50
|
+
Response response = Restfulie.at(uri).throwError().get();
|
51
|
+
</pre>
|
52
|
+
|
53
|
+
<h3>History</h3>
|
54
|
+
|
55
|
+
<p>The history feature gives access to the history of executed requests, so one can re-execute
|
56
|
+
it or customize it prior to sending the request again. To add it, simply load it into your DSL:</p>
|
57
|
+
|
58
|
+
<pre>
|
59
|
+
Response response = Restfulie.at(uri).history().get();
|
60
|
+
|
61
|
+
# sends the request again
|
62
|
+
response.getRequestHistory().get(0);
|
63
|
+
</pre>
|
64
|
+
|
65
|
+
<h3>ConnegWhenUnaccepted</h3>
|
66
|
+
|
67
|
+
<p>The ConnegWhenUnaccepted feature retry an request when the server response with the 406("unaccepted media type") code, the new request will be sent with another media type supported by the server(throug Accept) if the client is
|
68
|
+
able to generate it.</p>
|
69
|
+
|
70
|
+
<pre>
|
71
|
+
Product product = Restfulie.at("http://localhost:3000/product/2").connegWhenUnaccepted().get();
|
72
|
+
</pre>
|
73
|
+
|
74
|
+
<h3>Custom request features</h3>
|
75
|
+
|
76
|
+
<p>It is easy to create your own feature, even with configuration parameters, simply create
|
77
|
+
a class and implement the interface ResponseFeature</p>
|
78
|
+
|
79
|
+
<pre>
|
80
|
+
public class MyFature implement ResponseFeature {
|
81
|
+
|
82
|
+
public Response process(ResponseChain responseChain, Response response) {
|
83
|
+
Response reponse = responseChain.next(response);
|
84
|
+
return response;
|
85
|
+
}
|
86
|
+
|
87
|
+
}
|
88
|
+
</pre>
|
89
|
+
|
90
|
+
<p>And then pass it so restfulie add it at the stack of features.</p>
|
91
|
+
<pre>
|
92
|
+
//the method features can receive more than one feature
|
93
|
+
Restfulie.at("resource_uri").withFeature(MyFeatureResponse.class,OtherFeatureResponse.class).get();
|
94
|
+
</pre>
|
95
|
+
|
96
|
+
|
97
|
+
<p>All Restfulie client features are implemented through a set of feature classes
|
98
|
+
such as this one. Feel free to contribute with extra features, configuration sets or
|
99
|
+
documentation to them or ask around in the mailing lists for other people contributions.</p>
|
@@ -0,0 +1,97 @@
|
|
1
|
+
<div id="textoCapitulo">
|
2
|
+
<h2>Hypermedia clients</h2>
|
3
|
+
|
4
|
+
<p>Hypermedia support information is scattered aroud the entire documentation as this is a hypermedia based library..</p>
|
5
|
+
|
6
|
+
<h2>The response object</h2>
|
7
|
+
|
8
|
+
The response object to a restfulie http request allows access to four different methods, the
|
9
|
+
response <b>code</b>, its <b>body</b>, <b>headers</b> and an extra method called <b>resource</b>
|
10
|
+
that will try to unmarshall the response body according to its content type.
|
11
|
+
|
12
|
+
Restfulie uses <a href="http://github.com/caelum/medie">medie</a> to do the unmarshalling,
|
13
|
+
giving back a hypermedia aware object. The following example shows a typical response to
|
14
|
+
a xml request:
|
15
|
+
|
16
|
+
<pre>
|
17
|
+
Response response = Restfulie.at(uri).accepts("application/xml").get();
|
18
|
+
System.out.println(response.getBody());
|
19
|
+
<%=html("
|
20
|
+
<order>
|
21
|
+
<link rel='payment' href='http://store.caelum.com.br/orders/2345/payment' />
|
22
|
+
<items>
|
23
|
+
<item>
|
24
|
+
<id>Rest from scratch book</id>
|
25
|
+
</item>
|
26
|
+
</items>
|
27
|
+
<price>1235.4</price>
|
28
|
+
</order>
|
29
|
+
")%>
|
30
|
+
System.out.println(response.getCode()); // 200
|
31
|
+
System.out.println(response.headers('Content-Type')); //'application/xml'
|
32
|
+
Order oder = response.getResourse();
|
33
|
+
System.out.println(order.getItems(0).getId()); // "Rest from scratch book"
|
34
|
+
</pre>
|
35
|
+
|
36
|
+
<h2>Supported media types</h2>
|
37
|
+
|
38
|
+
Restfulie client comes with built in support to xml, json and opensearch and can be easily enhanced by providing your own driver through Medie. Check out medie's documentation on how to
|
39
|
+
support your own media type or contribute with Restfulie by posting your media
|
40
|
+
type handler at the mailing list.
|
41
|
+
|
42
|
+
<h2>Link support</h2>
|
43
|
+
|
44
|
+
For representations that contain link elements in its body, such as this one in xml:
|
45
|
+
|
46
|
+
<pre>
|
47
|
+
<%=html("
|
48
|
+
<order>
|
49
|
+
<link rel='payment' href='http://store.caelum.com.br/orders/2345/payment' />
|
50
|
+
<items>
|
51
|
+
<item>
|
52
|
+
<id>Rest from scratch book</id>
|
53
|
+
</item>
|
54
|
+
</items>
|
55
|
+
<price>1235.4</price>
|
56
|
+
</order>
|
57
|
+
")%>
|
58
|
+
</pre>
|
59
|
+
|
60
|
+
This link can be accessed by unmarshalling the resource and then accessing the link itself:
|
61
|
+
|
62
|
+
<pre>
|
63
|
+
Response response = Restfulie.at(uri).get();
|
64
|
+
|
65
|
+
//follow the payment link within the order
|
66
|
+
Order order = response.getResource();
|
67
|
+
// the resource method is staticaly imported from ...
|
68
|
+
resource(order).link("payment").follow().get();
|
69
|
+
|
70
|
+
//will print the payment body
|
71
|
+
System.out.println(order.response.getBody());
|
72
|
+
</pre>
|
73
|
+
|
74
|
+
Once you have invoked the <b>follow</b> method, the object returned is the same as a
|
75
|
+
<b>Restfulie.at()</b> invocation, a request dsl, which allows you to configure the
|
76
|
+
request as you wish, and execute it by invoking the proper http verb (i.e. get, post or put).
|
77
|
+
|
78
|
+
You can see an example of a full client navigating through links in the examples section.
|
79
|
+
|
80
|
+
<h2>Link header support</h2>
|
81
|
+
|
82
|
+
If your service provides a link header such as:
|
83
|
+
|
84
|
+
<pre>
|
85
|
+
Link: <http://amundsen.com/examples/mazes/2d/ten-by-ten/0:north>; rel="start"; type="application/xml"
|
86
|
+
</pre>
|
87
|
+
|
88
|
+
This header can be accessed by using the headers.link and links method:
|
89
|
+
|
90
|
+
<pre>
|
91
|
+
Response response = Restfulie.at(uri).get();
|
92
|
+
puts response.getHeaders().link("start").getHref();
|
93
|
+
|
94
|
+
# following the link
|
95
|
+
Resource resource = response.getResource();
|
96
|
+
Response anotherResponse = resource.headers.link("start").follow().get();
|
97
|
+
</pre>
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div id="menuWrap">
|
2
|
+
<ul id="menuElements">
|
3
|
+
<li><a href="<%=url_for :controller => :systems, :action =>:hypermedia%>"><span>why hypermedia?</span></a></li>
|
4
|
+
<li><a href="<%=url_for :controller => :systems, :action =>:quit_pretending%>"><span>quit pretending</span></a></li>
|
5
|
+
<li><a href="<%=url_for :controller => :systems, :action =>:features %>"><span>features</span></a></li>
|
6
|
+
<li><a href="<%=url_for :controller => :systems, :action =>:documentation %>"><span>documentation</span></a></li>
|
7
|
+
<li><a href="<%= url_for :support%>"><span>support</span></a></li>
|
8
|
+
<li><a href="<%=rails_path%>" onclick="javascript:pageTracker._trackPageview('<%= rails_path%>')"><span>pdf</span></a></li>
|
9
|
+
<li><a href="<%= url_for :benefits%>"><span>testimonials</span></a></li>
|
10
|
+
</ul>
|
11
|
+
</div>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<div class="navigation">
|
2
|
+
<ul id="nav">
|
3
|
+
<li>
|
4
|
+
<h4><a href="http://github.com/caelum/restfulie/wiki">WIKI</a></h4>
|
5
|
+
<p><a href="http://github.com/caelum/restfulie/wiki">Detailed Documentation</a></p>
|
6
|
+
</li>
|
7
|
+
<li>
|
8
|
+
<h4><a href="https://github.com/caelum/restfulie/wiki/Videos">VIDEO</a></h4>
|
9
|
+
<p><a href="https://github.com/caelum/restfulie/wiki/Videos">Tutorials</a></p>
|
10
|
+
</li>
|
11
|
+
<li>
|
12
|
+
<h4><a href="https://github.com/caelum/restfulie/wiki/Mailing-lists">SUPPORT</a></h4>
|
13
|
+
<p><a href="https://github.com/caelum/restfulie/wiki/Mailing-lists">Mailing list</a></p>
|
14
|
+
</li>
|
15
|
+
<li>
|
16
|
+
<h4><a href="https://github.com/caelum/restfulie/wiki/issues">ISSUES</a></h4>
|
17
|
+
<p><a href="https://github.com/caelum/restfulie/wiki/issues">Issue tracker</a></p>
|
18
|
+
</li>
|
19
|
+
<li>
|
20
|
+
<h4><a href="http://webchat.freenode.net/?channels=restfulie">IRC</a></h4>
|
21
|
+
<p><a href="http://webchat.freenode.net/?channels=restfulie">The human touch</a></p>
|
22
|
+
</li>
|
23
|
+
</ul>
|
24
|
+
</div>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
5
|
+
<title>restfulie - rest from scratch</title>
|
6
|
+
<%= stylesheet_link_tag "screen", "menu", "uppermenu" %>
|
7
|
+
<!--[if lt IE 7]>
|
8
|
+
<script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
|
9
|
+
<![endif]-->
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
<div id="headerWrap">
|
14
|
+
<div id="headerContent">
|
15
|
+
|
16
|
+
<%= render :partial => 'layouts/uppermenu' %>
|
17
|
+
|
18
|
+
<h1 id="logoRestfulie"><span>restfulie</span></h1><!-- restfulielogo-->
|
19
|
+
<p class="moto">Restful made easy.</p>
|
20
|
+
|
21
|
+
<a id="caelumObjects" href="http://www.caelumobjects.com/" title="Caelum Objects Site"><span>Caelum Objects</span></a>
|
22
|
+
|
23
|
+
</div><!-- header content -->
|
24
|
+
</div><!-- header wrap-->
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
<%= yield %>
|
29
|
+
|
30
|
+
<div id="footerWrap">
|
31
|
+
<div id="footerContent">
|
32
|
+
<div class="footbar">
|
33
|
+
<a href="http://caelumobjects.com" style="border:none"><%= image_tag"logoCaelumGray-trans.png", :alt => "caelum logo", :class => "logoFooter" %></a>
|
34
|
+
<p><a href="#.html">license</a> - Restfulie ©2009-2011 Caelum Objects</p>
|
35
|
+
</div><!-- footnote-->
|
36
|
+
</div><!-- footer content -->
|
37
|
+
</div><!-- footer wrap-->
|
38
|
+
|
39
|
+
<script type="text/javascript">
|
40
|
+
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
41
|
+
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
42
|
+
</script>
|
43
|
+
<script type="text/javascript">
|
44
|
+
try {
|
45
|
+
var pageTracker = _gat._getTracker("UA-11770776-2");
|
46
|
+
pageTracker._trackPageview();
|
47
|
+
} catch(err) {}</script>
|
48
|
+
|
49
|
+
</body>
|
50
|
+
</html>
|