logical_model 0.2.4 → 0.2.5
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 +11 -0
- data/VERSION +1 -1
- data/lib/logical_model.rb +12 -4
- data/logical_model.gemspec +4 -3
- data/test/helper.rb +1 -0
- data/test/typhoeus_mocks.rb +24 -0
- metadata +20 -19
    
        data/README.rdoc
    CHANGED
    
    | @@ -4,6 +4,17 @@ LogicalModel allows to use a restfull resources as models. | |
| 4 4 |  | 
| 5 5 | 
             
            It was written following this tutorial: http://www.slideshare.net/ihower/serviceoriented-design-and-implement-with-rails3
         | 
| 6 6 |  | 
| 7 | 
            +
            == Assumptions
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            LogicalModel makes some assumptions about the service you'll be consuming
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            # TODO
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            * it is RESTfull
         | 
| 14 | 
            +
            * Create response on success is
         | 
| 15 | 
            +
                {}
         | 
| 16 | 
            +
            * Create response on failure is
         | 
| 17 | 
            +
             | 
| 7 18 | 
             
            == Usage
         | 
| 8 19 |  | 
| 9 20 | 
             
            In your Gemfile:
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.2. | 
| 1 | 
            +
            0.2.5
         | 
    
        data/lib/logical_model.rb
    CHANGED
    
    | @@ -17,6 +17,7 @@ require 'kaminari' | |
| 17 17 | 
             
            #   api_key_name: api key parameter name. eg: app_key
         | 
| 18 18 | 
             
            #   api_key: api_key. eg: "asd32fa4s4pdf35tr"
         | 
| 19 19 | 
             
            #   log_path: Path to log file. Will be ignored if using Rails.
         | 
| 20 | 
            +
            #   json_root: TODO doc
         | 
| 20 21 | 
             
            #
         | 
| 21 22 | 
             
            # You may use validations such as validates_presence_of, etc.
         | 
| 22 23 | 
             
            #
         | 
| @@ -250,11 +251,11 @@ class LogicalModel | |
| 250 251 | 
             
              # creates model.
         | 
| 251 252 | 
             
              #
         | 
| 252 253 | 
             
              # returns:
         | 
| 253 | 
            -
              # | 
| 254 | 
            -
              # | 
| 255 | 
            -
              # | 
| 254 | 
            +
              # @return false if model invalid
         | 
| 255 | 
            +
              # @return nil if there was a connection problem
         | 
| 256 | 
            +
              # @return created model ID if successfull
         | 
| 256 257 | 
             
              #
         | 
| 257 | 
            -
              # Usage:
         | 
| 258 | 
            +
              # @example Usage:
         | 
| 258 259 | 
             
              #   @person = Person.new(params[:person])
         | 
| 259 260 | 
             
              #   @person.create( non_attribute_param: "value" )
         | 
| 260 261 | 
             
              def create(params = {})
         | 
| @@ -270,6 +271,13 @@ class LogicalModel | |
| 270 271 | 
             
                if response.code == 201
         | 
| 271 272 | 
             
                  log_ok(response)
         | 
| 272 273 | 
             
                  self.id = ActiveSupport::JSON.decode(response.body)["id"]
         | 
| 274 | 
            +
                elsif response.code == 400
         | 
| 275 | 
            +
                  log_failed(response)
         | 
| 276 | 
            +
                  ws_errors = ActiveSupport::JSON.decode(response.body)["errors"]
         | 
| 277 | 
            +
                  ws_errors.each_key do |k|
         | 
| 278 | 
            +
                    self.errors.add k, ws_errors[k]
         | 
| 279 | 
            +
                  end
         | 
| 280 | 
            +
                  return false
         | 
| 273 281 | 
             
                else
         | 
| 274 282 | 
             
                  log_failed(response)
         | 
| 275 283 | 
             
                  return nil
         | 
    
        data/logical_model.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = "logical_model"
         | 
| 8 | 
            -
              s.version = "0.2. | 
| 8 | 
            +
              s.version = "0.2.5"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Dwayne Macgowan"]
         | 
| 12 | 
            -
              s.date = "2011-10- | 
| 12 | 
            +
              s.date = "2011-10-13"
         | 
| 13 13 | 
             
              s.description = "LogicalModel allows to use a resource as a model. It is based on web presentation http://www.slideshare.net/ihower/serviceoriented-design-and-implement-with-rails3"
         | 
| 14 14 | 
             
              s.email = "dwaynemac@gmail.com"
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -27,7 +27,8 @@ Gem::Specification.new do |s| | |
| 27 27 | 
             
                "lib/logical_model.rb",
         | 
| 28 28 | 
             
                "logical_model.gemspec",
         | 
| 29 29 | 
             
                "test/helper.rb",
         | 
| 30 | 
            -
                "test/test_logical_model.rb"
         | 
| 30 | 
            +
                "test/test_logical_model.rb",
         | 
| 31 | 
            +
                "test/typhoeus_mocks.rb"
         | 
| 31 32 | 
             
              ]
         | 
| 32 33 | 
             
              s.homepage = "http://github.com/dwaynemac/logical_model"
         | 
| 33 34 | 
             
              s.licenses = ["MIT"]
         | 
    
        data/test/helper.rb
    CHANGED
    
    
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            module TyphoeusMocks
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              # Mocks a Typhoeus::Response
         | 
| 4 | 
            +
              # @param [Hash] options
         | 
| 5 | 
            +
              # @option [Integer] code - http response code. default: 200
         | 
| 6 | 
            +
              # @option [String] body - response body
         | 
| 7 | 
            +
              # @option [String] url - requested url
         | 
| 8 | 
            +
              # @return [Typhoeus::Response]
         | 
| 9 | 
            +
              def mock_response(options={})
         | 
| 10 | 
            +
                mock_response = Typhoeus::Response.new(
         | 
| 11 | 
            +
                     :code => options[:code] || 200,
         | 
| 12 | 
            +
                     :headers => "whatever",
         | 
| 13 | 
            +
                     :time => 0.1,
         | 
| 14 | 
            +
                     :body => options[:body])
         | 
| 15 | 
            +
                mock_response.stub!(:request).and_return(mock(:url => options[:url] || "mocked-url"))
         | 
| 16 | 
            +
                mock_response
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              # Mocks Typhoeus POST Request and returns a mocked_response
         | 
| 20 | 
            +
              # @param [Hash] options, see mock_response options.
         | 
| 21 | 
            +
              def mock_post_with(options={})
         | 
| 22 | 
            +
                Typhoeus::Request.stub!(:post).and_return(mock_response(options))
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: logical_model
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.5
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,11 +9,11 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2011-10- | 
| 12 | 
            +
            date: 2011-10-13 00:00:00.000000000Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: activemodel
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &85554970 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| @@ -21,10 +21,10 @@ dependencies: | |
| 21 21 | 
             
                    version: '0'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *85554970
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: activesupport
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &85554550 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ! '>='
         | 
| @@ -32,10 +32,10 @@ dependencies: | |
| 32 32 | 
             
                    version: '0'
         | 
| 33 33 | 
             
              type: :runtime
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *85554550
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: typhoeus
         | 
| 38 | 
            -
              requirement: & | 
| 38 | 
            +
              requirement: &85554020 !ruby/object:Gem::Requirement
         | 
| 39 39 | 
             
                none: false
         | 
| 40 40 | 
             
                requirements:
         | 
| 41 41 | 
             
                - - ~>
         | 
| @@ -43,10 +43,10 @@ dependencies: | |
| 43 43 | 
             
                    version: 0.2.4
         | 
| 44 44 | 
             
              type: :runtime
         | 
| 45 45 | 
             
              prerelease: false
         | 
| 46 | 
            -
              version_requirements: * | 
| 46 | 
            +
              version_requirements: *85554020
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: kaminari
         | 
| 49 | 
            -
              requirement: & | 
| 49 | 
            +
              requirement: &85550600 !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
                none: false
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - ! '>='
         | 
| @@ -54,10 +54,10 @@ dependencies: | |
| 54 54 | 
             
                    version: '0'
         | 
| 55 55 | 
             
              type: :runtime
         | 
| 56 56 | 
             
              prerelease: false
         | 
| 57 | 
            -
              version_requirements: * | 
| 57 | 
            +
              version_requirements: *85550600
         | 
| 58 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 59 | 
             
              name: shoulda
         | 
| 60 | 
            -
              requirement: & | 
| 60 | 
            +
              requirement: &85550280 !ruby/object:Gem::Requirement
         | 
| 61 61 | 
             
                none: false
         | 
| 62 62 | 
             
                requirements:
         | 
| 63 63 | 
             
                - - ! '>='
         | 
| @@ -65,10 +65,10 @@ dependencies: | |
| 65 65 | 
             
                    version: '0'
         | 
| 66 66 | 
             
              type: :development
         | 
| 67 67 | 
             
              prerelease: false
         | 
| 68 | 
            -
              version_requirements: * | 
| 68 | 
            +
              version_requirements: *85550280
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: bundler
         | 
| 71 | 
            -
              requirement: & | 
| 71 | 
            +
              requirement: &85549980 !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                none: false
         | 
| 73 73 | 
             
                requirements:
         | 
| 74 74 | 
             
                - - ~>
         | 
| @@ -76,10 +76,10 @@ dependencies: | |
| 76 76 | 
             
                    version: 1.0.0
         | 
| 77 77 | 
             
              type: :development
         | 
| 78 78 | 
             
              prerelease: false
         | 
| 79 | 
            -
              version_requirements: * | 
| 79 | 
            +
              version_requirements: *85549980
         | 
| 80 80 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 81 81 | 
             
              name: jeweler
         | 
| 82 | 
            -
              requirement: & | 
| 82 | 
            +
              requirement: &85549680 !ruby/object:Gem::Requirement
         | 
| 83 83 | 
             
                none: false
         | 
| 84 84 | 
             
                requirements:
         | 
| 85 85 | 
             
                - - ~>
         | 
| @@ -87,10 +87,10 @@ dependencies: | |
| 87 87 | 
             
                    version: 1.6.4
         | 
| 88 88 | 
             
              type: :development
         | 
| 89 89 | 
             
              prerelease: false
         | 
| 90 | 
            -
              version_requirements: * | 
| 90 | 
            +
              version_requirements: *85549680
         | 
| 91 91 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 92 92 | 
             
              name: rcov
         | 
| 93 | 
            -
              requirement: & | 
| 93 | 
            +
              requirement: &85549380 !ruby/object:Gem::Requirement
         | 
| 94 94 | 
             
                none: false
         | 
| 95 95 | 
             
                requirements:
         | 
| 96 96 | 
             
                - - ! '>='
         | 
| @@ -98,7 +98,7 @@ dependencies: | |
| 98 98 | 
             
                    version: '0'
         | 
| 99 99 | 
             
              type: :development
         | 
| 100 100 | 
             
              prerelease: false
         | 
| 101 | 
            -
              version_requirements: * | 
| 101 | 
            +
              version_requirements: *85549380
         | 
| 102 102 | 
             
            description: LogicalModel allows to use a resource as a model. It is based on web
         | 
| 103 103 | 
             
              presentation http://www.slideshare.net/ihower/serviceoriented-design-and-implement-with-rails3
         | 
| 104 104 | 
             
            email: dwaynemac@gmail.com
         | 
| @@ -119,6 +119,7 @@ files: | |
| 119 119 | 
             
            - logical_model.gemspec
         | 
| 120 120 | 
             
            - test/helper.rb
         | 
| 121 121 | 
             
            - test/test_logical_model.rb
         | 
| 122 | 
            +
            - test/typhoeus_mocks.rb
         | 
| 122 123 | 
             
            homepage: http://github.com/dwaynemac/logical_model
         | 
| 123 124 | 
             
            licenses:
         | 
| 124 125 | 
             
            - MIT
         | 
| @@ -134,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 134 135 | 
             
                  version: '0'
         | 
| 135 136 | 
             
                  segments:
         | 
| 136 137 | 
             
                  - 0
         | 
| 137 | 
            -
                  hash:  | 
| 138 | 
            +
                  hash: 977768143
         | 
| 138 139 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 139 140 | 
             
              none: false
         | 
| 140 141 | 
             
              requirements:
         |