fafactory 0.0.4 → 0.0.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/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
|