fafactory 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/fafactory.rb +56 -4
- metadata +2 -2
data/lib/fafactory.rb
CHANGED
@@ -2,11 +2,50 @@ require 'active_resource'
|
|
2
2
|
|
3
3
|
class Fafactory < ActiveResource::Base
|
4
4
|
|
5
|
+
# Defines a new object definition
|
6
|
+
def self.define(service, model, defaults)
|
7
|
+
@definitions ||= {}
|
8
|
+
|
9
|
+
model = camelize_model(model)
|
10
|
+
|
11
|
+
factory = Fafactory.new(service, model, defaults)
|
12
|
+
@definitions[service] ||= {}
|
13
|
+
@definitions[service][model] = factory
|
14
|
+
end
|
15
|
+
|
16
|
+
# Constructs a new instance based on the given service and model
|
17
|
+
def self.create(service, model, options = {})
|
18
|
+
model = camelize_model(model)
|
19
|
+
|
20
|
+
# define a blank definition if we don't already have a definition
|
21
|
+
@definitions ||= {}
|
22
|
+
if @definitions[service] == nil ||
|
23
|
+
@definitions[service][model] == nil
|
24
|
+
|
25
|
+
define(service, model, {})
|
26
|
+
end
|
27
|
+
|
28
|
+
@definitions[service][model].create(options)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Set up a new fafactory with the given defaults
|
32
|
+
def initialize(service, model, defaults)
|
33
|
+
@service = service
|
34
|
+
@model = Fafactory.camelize_model(model)
|
35
|
+
@defaults = defaults
|
36
|
+
end
|
37
|
+
|
38
|
+
# Creates a new remote instance based on the given parameters
|
39
|
+
def create(options)
|
40
|
+
Fafactory.create_instance(@service, @model,
|
41
|
+
options.merge(@defaults))[Fafactory.underscore_model(@model)]
|
42
|
+
end
|
43
|
+
|
5
44
|
# Creates a new instance of a remote model using the data provided.
|
6
45
|
def self.create_instance(service, model, data)
|
7
46
|
Fafactory.configure_site(service)
|
8
47
|
result = Fafactory.post :create_instance, nil,
|
9
|
-
{ :model => model, :data => data }.to_xml
|
48
|
+
{ :model => camelize_model(model), :data => data }.to_xml
|
10
49
|
|
11
50
|
return Hash.from_xml(result.body)
|
12
51
|
end
|
@@ -23,13 +62,26 @@ class Fafactory < ActiveResource::Base
|
|
23
62
|
# Loads an instance of a remote model based on the id given
|
24
63
|
def self.find(service, model, id)
|
25
64
|
Fafactory.configure_site(service)
|
26
|
-
Fafactory.get(:find, { :model => model, :id => id })
|
65
|
+
Fafactory.get(:find, { :model => camelize_model(model), :id => id })
|
66
|
+
end
|
67
|
+
|
68
|
+
# Clears definitions (mainly useful for testing)
|
69
|
+
def self.clear_definitions
|
70
|
+
@definitions = {} if defined? @definitions
|
27
71
|
end
|
28
72
|
|
29
73
|
private
|
30
74
|
def self.configure_site(service)
|
31
|
-
|
75
|
+
@fafactory_config ||= YAML.load_file('config/fafactory.yml')
|
32
76
|
|
33
|
-
self.site = "http://0.0.0.0:#{
|
77
|
+
self.site = "http://0.0.0.0:#{@fafactory_config[service]["port"]}"
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.camelize_model(model)
|
81
|
+
model.to_s.camelize
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.underscore_model(model)
|
85
|
+
model.to_s.underscore
|
34
86
|
end
|
35
87
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fafactory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gnoso, Inc.
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-29 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|