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:
|