fabrication 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,21 +1,14 @@
1
1
  class Fabrication::Generator::ActiveRecord < Fabrication::Generator::Base
2
2
 
3
- attr_accessor :options
4
-
5
- def generate(options)
6
- self.options = options
7
- self.instance = super.tap { |t| t.save }
8
- end
9
-
10
3
  def self.supports?(klass)
11
4
  defined?(ActiveRecord) && klass.ancestors.include?(ActiveRecord::Base)
12
5
  end
13
6
 
14
7
  def method_missing(method_name, *args, &block)
15
8
  method_name = method_name.to_s
16
- count = (args && args.first && args.first[:count]) || 0
17
9
  unless options.include?(method_name.to_sym)
18
10
  if block_given?
11
+ count = (args && args.first && args.first[:count]) || 0
19
12
  unless (args.first && args.first[:force]) || instance.class.columns.map(&:name).include?(method_name)
20
13
  # copy the original getter
21
14
  instance.instance_variable_set("@__#{method_name}_original", instance.method(method_name).clone)
@@ -48,4 +41,10 @@ class Fabrication::Generator::ActiveRecord < Fabrication::Generator::Base
48
41
  end
49
42
  end
50
43
 
44
+ protected
45
+
46
+ def after_generation
47
+ instance.save
48
+ end
49
+
51
50
  end
@@ -1,28 +1,39 @@
1
1
  class Fabrication::Generator::Base
2
2
 
3
- attr_accessor :klass, :parent, :block, :instance
3
+ def self.supports?(klass); true end
4
4
 
5
- def initialize(klass, parent=nil, &block)
6
- self.klass = klass
7
- self.parent = parent
8
- self.block = block
5
+ def after_create(&block)
6
+ self.after_create_block = block if block_given?
9
7
  end
10
8
 
11
9
  def generate(options={})
12
10
  self.instance = parent ? parent.fabricate : klass.new
13
- instance_eval &block
11
+ self.options = options
12
+ instance_eval(&block)
14
13
  options.each { |k,v| assign(instance, k, v) }
14
+ after_generation
15
+ after_create_block.call(instance) if after_create_block
15
16
  instance
16
17
  end
17
18
 
19
+ def initialize(klass, parent=nil, &block)
20
+ self.klass = klass
21
+ self.parent = parent
22
+ self.block = block
23
+ end
24
+
18
25
  def method_missing(method_name, *args, &block)
19
26
  assign(instance, method_name.to_s, args.first, &block)
20
27
  end
21
28
 
22
- def self.supports?(klass); true end
29
+ protected
30
+
31
+ def after_generation; end
23
32
 
24
33
  private
25
34
 
35
+ attr_accessor :after_create_block, :block, :instance, :klass, :options, :parent
36
+
26
37
  def assign(instance, method_name, param)
27
38
  value = nil
28
39
  if param.is_a?(Hash) && param[:count] && param[:count] > 1
@@ -1,7 +1,7 @@
1
1
  class Fabrication::Generator::Mongoid < Fabrication::Generator::Base
2
2
 
3
- def generate(options)
4
- self.instance = super.tap { |t| t.save }
3
+ def after_generation
4
+ instance.save
5
5
  end
6
6
 
7
7
  def self.supports?(klass)
@@ -1,3 +1,3 @@
1
1
  module Fabrication
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
data/spec/spec.opts CHANGED
@@ -1,2 +1,3 @@
1
1
  --colour
2
2
  --format nested
3
+ --backtrace
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fabrication
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 2
10
- version: 0.2.2
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Paul Elliott
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-29 00:00:00 -04:00
18
+ date: 2010-07-02 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency