fafactory 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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