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.
Files changed (2) hide show
  1. data/lib/fafactory.rb +56 -4
  2. metadata +2 -2
@@ -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
- @@fafactory_config ||= YAML.load_file('config/fafactory.yml')
75
+ @fafactory_config ||= YAML.load_file('config/fafactory.yml')
32
76
 
33
- self.site = "http://0.0.0.0:#{@@fafactory_config[service]["port"]}"
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
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-26 00:00:00 -04:00
12
+ date: 2009-08-29 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency