rest_engine 0.0.1 → 0.0.2
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.md +55 -0
- data/app/controllers/rest_engine/main_controller.rb +6 -10
- data/config/routes.rb +5 -5
- metadata +67 -73
- data/README.rdoc +0 -19
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            rest_engine
         | 
| 2 | 
            +
            ===========
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            rest_engine is a Rails 3 engine that provide your Rails application a restful API
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Installation
         | 
| 7 | 
            +
            ------------
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            In your `Gemfile`, add the following dependencies:
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                gem 'rest_engine'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            Run:
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                $ bundle install
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            That's it. It will provide a restful API for your models.
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            Usage
         | 
| 20 | 
            +
            -----
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            Start the server:
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                $ rails server
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            Let's say you have a model `Customer`, you should now be able to access your customers:
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            * To get a list of customers: `GET http://localhost:3000/api/customers`
         | 
| 29 | 
            +
            * To get a single customer: `GET http://localhost:3000/api/customers/1`
         | 
| 30 | 
            +
            * To create a new customer: `POST http://localhost:3000/api/customers`
         | 
| 31 | 
            +
            * To update a customer: `PUT http://localhost:3000/api/customers/1`
         | 
| 32 | 
            +
            * To delete a customer: `DELETE http://localhost:3000/api/customers/1`
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            It also support namespaced model. For example if your model is `Product::Toy`, then the url would be: `http://localhost:3000/api/product/toys`
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            Or, to see the available routes:
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                $ rake routes
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            Contributing to rest_engine
         | 
| 41 | 
            +
            ---------------------------
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
         | 
| 44 | 
            +
            * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
         | 
| 45 | 
            +
            * Fork the project
         | 
| 46 | 
            +
            * Start a feature/bugfix branch
         | 
| 47 | 
            +
            * Commit and push until you are happy with your contribution
         | 
| 48 | 
            +
            * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
         | 
| 49 | 
            +
            * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            Copyright
         | 
| 52 | 
            +
            ---------
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            Copyright (c) 2011 Yehezkiel Syamsuhadi. See LICENSE.txt for
         | 
| 55 | 
            +
            further details.
         | 
| @@ -16,12 +16,12 @@ module RestEngine | |
| 16 16 |  | 
| 17 17 | 
             
                  items = @model.all(options)
         | 
| 18 18 |  | 
| 19 | 
            -
                  respond(:success => true,  | 
| 19 | 
            +
                  respond(:success => true, @resources => items)
         | 
| 20 20 | 
             
                end
         | 
| 21 21 |  | 
| 22 22 | 
             
                def show
         | 
| 23 23 | 
             
                  item = @model.find(params[:id])
         | 
| 24 | 
            -
                  respond(:success => true,  | 
| 24 | 
            +
                  respond(:success => true, @resources => [item])
         | 
| 25 25 | 
             
                end
         | 
| 26 26 |  | 
| 27 27 | 
             
                def destroy
         | 
| @@ -36,7 +36,7 @@ module RestEngine | |
| 36 36 | 
             
                def create
         | 
| 37 37 | 
             
                  item = @model.new(request.POST)
         | 
| 38 38 | 
             
                  if item.save
         | 
| 39 | 
            -
                    respond(:success => true, :message => "Created new #{@model_name} #{item.id}",  | 
| 39 | 
            +
                    respond(:success => true, :message => "Created new #{@model_name} #{item.id}", @resources => [item])
         | 
| 40 40 | 
             
                  else
         | 
| 41 41 | 
             
                    respond(:success => false, :message => "Failed to create #{@model_name}")
         | 
| 42 42 | 
             
                  end
         | 
| @@ -45,7 +45,7 @@ module RestEngine | |
| 45 45 | 
             
                def update
         | 
| 46 46 | 
             
                  item = @model.find(params[:id])
         | 
| 47 47 | 
             
                  if item.update_attributes(request.POST)
         | 
| 48 | 
            -
                    respond(:success => true, :message => "Updated #{@model_name} #{item.id}",  | 
| 48 | 
            +
                    respond(:success => true, :message => "Updated #{@model_name} #{item.id}", @resources => [item])
         | 
| 49 49 | 
             
                  else
         | 
| 50 50 | 
             
                    respond(:success => false, :message => "Failed to update #{@model_name}")
         | 
| 51 51 | 
             
                  end
         | 
| @@ -61,13 +61,9 @@ module RestEngine | |
| 61 61 | 
             
                end
         | 
| 62 62 |  | 
| 63 63 | 
             
                def get_model
         | 
| 64 | 
            -
                  @ | 
| 64 | 
            +
                  @resources = params[:resources]
         | 
| 65 | 
            +
                  @model_name = @resources.classify
         | 
| 65 66 | 
             
                  @model = @model_name.constantize
         | 
| 66 67 | 
             
                end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                def to_model_name(resources_name)
         | 
| 69 | 
            -
                  parts = resources_name.split('~')
         | 
| 70 | 
            -
                  parts.map { |x| x == parts.last ? x.classify : x.camelize }.join('::')
         | 
| 71 | 
            -
                end
         | 
| 72 68 | 
             
              end
         | 
| 73 69 | 
             
            end
         | 
    
        data/config/routes.rb
    CHANGED
    
    | @@ -1,11 +1,11 @@ | |
| 1 1 | 
             
            Rails.application.routes.draw do
         | 
| 2 2 | 
             
              scope 'api', :as => 'rest_engine' do
         | 
| 3 3 | 
             
                controller 'rest_engine/main' do
         | 
| 4 | 
            -
                  get    '/: | 
| 5 | 
            -
                   | 
| 6 | 
            -
                   | 
| 7 | 
            -
                   | 
| 8 | 
            -
                   | 
| 4 | 
            +
                  get    '/*resources/:id(.:format)', :to => :show,    :as => 'show',    :constraints => { :id => /\d+/ }
         | 
| 5 | 
            +
                  put    '/*resources/:id(.:format)', :to => :update,  :as => 'update',  :constraints => { :id => /\d+/ }
         | 
| 6 | 
            +
                  delete '/*resources/:id(.:format)', :to => :destroy, :as => 'destroy', :constraints => { :id => /\d+/ }
         | 
| 7 | 
            +
                  get    '/:resources(.:format)',     :to => :list,    :as => 'list',    :constraints => { :resources => /.+?/ }
         | 
| 8 | 
            +
                  post   '/:resources(.:format)',     :to => :create,  :as => 'create',  :constraints => { :resources => /.+?/ }
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,153 +1,147 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rest_engine
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.2
         | 
| 4 5 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 0.0.1
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 8 8 | 
             
            - Yehezkiel Syamsuhadi
         | 
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            date: 2011-06-25 00:00:00 +10:00
         | 
| 12 | 
            +
            date: 2011-07-21 00:00:00.000000000 +10:00
         | 
| 14 13 | 
             
            default_executable: 
         | 
| 15 | 
            -
            dependencies: | 
| 16 | 
            -
            - !ruby/object:Gem::Dependency | 
| 14 | 
            +
            dependencies:
         | 
| 15 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 17 16 | 
             
              name: rails
         | 
| 18 | 
            -
              requirement: & | 
| 17 | 
            +
              requirement: &2159038320 !ruby/object:Gem::Requirement
         | 
| 19 18 | 
             
                none: false
         | 
| 20 | 
            -
                requirements: | 
| 19 | 
            +
                requirements:
         | 
| 21 20 | 
             
                - - ~>
         | 
| 22 | 
            -
                  - !ruby/object:Gem::Version | 
| 21 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 23 22 | 
             
                    version: 3.0.9
         | 
| 24 23 | 
             
              type: :development
         | 
| 25 24 | 
             
              prerelease: false
         | 
| 26 | 
            -
              version_requirements: * | 
| 27 | 
            -
            - !ruby/object:Gem::Dependency | 
| 25 | 
            +
              version_requirements: *2159038320
         | 
| 26 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 27 | 
             
              name: sqlite3
         | 
| 29 | 
            -
              requirement: & | 
| 28 | 
            +
              requirement: &2159037780 !ruby/object:Gem::Requirement
         | 
| 30 29 | 
             
                none: false
         | 
| 31 | 
            -
                requirements: | 
| 30 | 
            +
                requirements:
         | 
| 32 31 | 
             
                - - ~>
         | 
| 33 | 
            -
                  - !ruby/object:Gem::Version | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 34 33 | 
             
                    version: 1.3.3
         | 
| 35 34 | 
             
              type: :development
         | 
| 36 35 | 
             
              prerelease: false
         | 
| 37 | 
            -
              version_requirements: * | 
| 38 | 
            -
            - !ruby/object:Gem::Dependency | 
| 36 | 
            +
              version_requirements: *2159037780
         | 
| 37 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 39 38 | 
             
              name: rspec
         | 
| 40 | 
            -
              requirement: & | 
| 39 | 
            +
              requirement: &2159037180 !ruby/object:Gem::Requirement
         | 
| 41 40 | 
             
                none: false
         | 
| 42 | 
            -
                requirements: | 
| 41 | 
            +
                requirements:
         | 
| 43 42 | 
             
                - - ~>
         | 
| 44 | 
            -
                  - !ruby/object:Gem::Version | 
| 43 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 45 44 | 
             
                    version: 2.3.0
         | 
| 46 45 | 
             
              type: :development
         | 
| 47 46 | 
             
              prerelease: false
         | 
| 48 | 
            -
              version_requirements: * | 
| 49 | 
            -
            - !ruby/object:Gem::Dependency | 
| 47 | 
            +
              version_requirements: *2159037180
         | 
| 48 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 50 49 | 
             
              name: rspec-rails
         | 
| 51 | 
            -
              requirement: & | 
| 50 | 
            +
              requirement: &2159036660 !ruby/object:Gem::Requirement
         | 
| 52 51 | 
             
                none: false
         | 
| 53 | 
            -
                requirements: | 
| 52 | 
            +
                requirements:
         | 
| 54 53 | 
             
                - - ~>
         | 
| 55 | 
            -
                  - !ruby/object:Gem::Version | 
| 54 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 56 55 | 
             
                    version: 2.3.1
         | 
| 57 56 | 
             
              type: :development
         | 
| 58 57 | 
             
              prerelease: false
         | 
| 59 | 
            -
              version_requirements: * | 
| 60 | 
            -
            - !ruby/object:Gem::Dependency | 
| 58 | 
            +
              version_requirements: *2159036660
         | 
| 59 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 61 60 | 
             
              name: bundler
         | 
| 62 | 
            -
              requirement: & | 
| 61 | 
            +
              requirement: &2159003540 !ruby/object:Gem::Requirement
         | 
| 63 62 | 
             
                none: false
         | 
| 64 | 
            -
                requirements: | 
| 63 | 
            +
                requirements:
         | 
| 65 64 | 
             
                - - ~>
         | 
| 66 | 
            -
                  - !ruby/object:Gem::Version | 
| 65 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 67 66 | 
             
                    version: 1.0.15
         | 
| 68 67 | 
             
              type: :development
         | 
| 69 68 | 
             
              prerelease: false
         | 
| 70 | 
            -
              version_requirements: * | 
| 71 | 
            -
            - !ruby/object:Gem::Dependency | 
| 69 | 
            +
              version_requirements: *2159003540
         | 
| 70 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 72 71 | 
             
              name: jeweler
         | 
| 73 | 
            -
              requirement: & | 
| 72 | 
            +
              requirement: &2159003060 !ruby/object:Gem::Requirement
         | 
| 74 73 | 
             
                none: false
         | 
| 75 | 
            -
                requirements: | 
| 74 | 
            +
                requirements:
         | 
| 76 75 | 
             
                - - ~>
         | 
| 77 | 
            -
                  - !ruby/object:Gem::Version | 
| 76 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 78 77 | 
             
                    version: 1.6.2
         | 
| 79 78 | 
             
              type: :development
         | 
| 80 79 | 
             
              prerelease: false
         | 
| 81 | 
            -
              version_requirements: * | 
| 82 | 
            -
            - !ruby/object:Gem::Dependency | 
| 80 | 
            +
              version_requirements: *2159003060
         | 
| 81 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 83 82 | 
             
              name: rcov
         | 
| 84 | 
            -
              requirement: & | 
| 83 | 
            +
              requirement: &2159002580 !ruby/object:Gem::Requirement
         | 
| 85 84 | 
             
                none: false
         | 
| 86 | 
            -
                requirements: | 
| 87 | 
            -
                - -  | 
| 88 | 
            -
                  - !ruby/object:Gem::Version | 
| 89 | 
            -
                    version:  | 
| 85 | 
            +
                requirements:
         | 
| 86 | 
            +
                - - ! '>='
         | 
| 87 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 88 | 
            +
                    version: '0'
         | 
| 90 89 | 
             
              type: :development
         | 
| 91 90 | 
             
              prerelease: false
         | 
| 92 | 
            -
              version_requirements: * | 
| 93 | 
            -
            - !ruby/object:Gem::Dependency | 
| 91 | 
            +
              version_requirements: *2159002580
         | 
| 92 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 94 93 | 
             
              name: factory_girl
         | 
| 95 | 
            -
              requirement: & | 
| 94 | 
            +
              requirement: &2159002100 !ruby/object:Gem::Requirement
         | 
| 96 95 | 
             
                none: false
         | 
| 97 | 
            -
                requirements: | 
| 96 | 
            +
                requirements:
         | 
| 98 97 | 
             
                - - ~>
         | 
| 99 | 
            -
                  - !ruby/object:Gem::Version | 
| 98 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 100 99 | 
             
                    version: 1.3.3
         | 
| 101 100 | 
             
              type: :development
         | 
| 102 101 | 
             
              prerelease: false
         | 
| 103 | 
            -
              version_requirements: * | 
| 102 | 
            +
              version_requirements: *2159002100
         | 
| 104 103 | 
             
            description: 
         | 
| 105 104 | 
             
            email: yehezkielbs@gmail.com
         | 
| 106 105 | 
             
            executables: []
         | 
| 107 | 
            -
             | 
| 108 106 | 
             
            extensions: []
         | 
| 109 | 
            -
             | 
| 110 | 
            -
            extra_rdoc_files: 
         | 
| 107 | 
            +
            extra_rdoc_files:
         | 
| 111 108 | 
             
            - LICENSE.txt
         | 
| 112 | 
            -
            - README. | 
| 113 | 
            -
            files: | 
| 109 | 
            +
            - README.md
         | 
| 110 | 
            +
            files:
         | 
| 114 111 | 
             
            - app/controllers/rest_engine/application_controller.rb
         | 
| 115 112 | 
             
            - app/controllers/rest_engine/main_controller.rb
         | 
| 116 113 | 
             
            - config/routes.rb
         | 
| 117 114 | 
             
            - lib/rest_engine.rb
         | 
| 118 115 | 
             
            - lib/rest_engine/engine.rb
         | 
| 119 116 | 
             
            - LICENSE.txt
         | 
| 120 | 
            -
            - README. | 
| 117 | 
            +
            - README.md
         | 
| 121 118 | 
             
            has_rdoc: true
         | 
| 122 119 | 
             
            homepage: http://github.com/yehezkielbs/rest_engine
         | 
| 123 | 
            -
            licenses: | 
| 120 | 
            +
            licenses:
         | 
| 124 121 | 
             
            - MIT
         | 
| 125 122 | 
             
            post_install_message: 
         | 
| 126 123 | 
             
            rdoc_options: []
         | 
| 127 | 
            -
             | 
| 128 | 
            -
            require_paths: 
         | 
| 124 | 
            +
            require_paths:
         | 
| 129 125 | 
             
            - lib
         | 
| 130 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 126 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 131 127 | 
             
              none: false
         | 
| 132 | 
            -
              requirements: | 
| 133 | 
            -
              - -  | 
| 134 | 
            -
                - !ruby/object:Gem::Version | 
| 135 | 
            -
                   | 
| 136 | 
            -
                  segments: | 
| 128 | 
            +
              requirements:
         | 
| 129 | 
            +
              - - ! '>='
         | 
| 130 | 
            +
                - !ruby/object:Gem::Version
         | 
| 131 | 
            +
                  version: '0'
         | 
| 132 | 
            +
                  segments:
         | 
| 137 133 | 
             
                  - 0
         | 
| 138 | 
            -
                   | 
| 139 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement | 
| 134 | 
            +
                  hash: 1271305889267693870
         | 
| 135 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 140 136 | 
             
              none: false
         | 
| 141 | 
            -
              requirements: | 
| 142 | 
            -
              - -  | 
| 143 | 
            -
                - !ruby/object:Gem::Version | 
| 144 | 
            -
                  version:  | 
| 137 | 
            +
              requirements:
         | 
| 138 | 
            +
              - - ! '>='
         | 
| 139 | 
            +
                - !ruby/object:Gem::Version
         | 
| 140 | 
            +
                  version: '0'
         | 
| 145 141 | 
             
            requirements: []
         | 
| 146 | 
            -
             | 
| 147 142 | 
             
            rubyforge_project: 
         | 
| 148 143 | 
             
            rubygems_version: 1.6.2
         | 
| 149 144 | 
             
            signing_key: 
         | 
| 150 145 | 
             
            specification_version: 3
         | 
| 151 | 
            -
            summary: A Rails 3  | 
| 146 | 
            +
            summary: A Rails 3 engine that provide your Rails application a restful API
         | 
| 152 147 | 
             
            test_files: []
         | 
| 153 | 
            -
             | 
    
        data/README.rdoc
    DELETED
    
    | @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            = rest_engine
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            Description goes here.
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            == Contributing to rest_engine
         | 
| 6 | 
            -
             
         | 
| 7 | 
            -
            * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
         | 
| 8 | 
            -
            * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
         | 
| 9 | 
            -
            * Fork the project
         | 
| 10 | 
            -
            * Start a feature/bugfix branch
         | 
| 11 | 
            -
            * Commit and push until you are happy with your contribution
         | 
| 12 | 
            -
            * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
         | 
| 13 | 
            -
            * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            == Copyright
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            Copyright (c) 2011 Yehezkiel Syamsuhadi. See LICENSE.txt for
         | 
| 18 | 
            -
            further details.
         | 
| 19 | 
            -
             |