tractor 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.4.4
@@ -25,7 +25,7 @@ module Tractor
25
25
 
26
26
  def create_from_instance(server_instance)
27
27
  hydrate_attributes(server_instance) do |attributes|
28
- self.create(attributes)
28
+ return self.create(attributes)
29
29
  end
30
30
  end
31
31
 
@@ -34,7 +34,7 @@ module Tractor
34
34
  raise "Cannot update an object that doesn't exist." unless existing_record
35
35
 
36
36
  hydrate_attributes(server_instance) do |attributes|
37
- existing_record.update(attributes)
37
+ return existing_record.update(attributes)
38
38
  end
39
39
  end
40
40
 
@@ -44,10 +44,16 @@ module Tractor
44
44
  obj_to_destroy.destroy
45
45
  end
46
46
 
47
- def hydrate_attributes(server_instance)
47
+ def hydrate_attributes(server_instance, hydrate_only=false, &block)
48
48
  attributes = attribute_mapper(server_instance)
49
- ensure_dependencies_met(server_instance)
50
- yield attributes
49
+ if hydrate_only
50
+ ensure_dependencies_met(server_instance, hydrate_only, &block)
51
+ block.call([self.to_s, attributes])
52
+ else
53
+ ensure_dependencies_met(server_instance, hydrate_only)
54
+ yield attributes
55
+ end
56
+ return attributes
51
57
  end
52
58
 
53
59
  def attribute_mapper(server_instance)
@@ -70,15 +76,19 @@ module Tractor
70
76
  return true
71
77
  end
72
78
 
73
- def ensure_dependencies_met(server_instance)
74
- return if dependencies_met?(server_instance)
75
-
79
+ def ensure_dependencies_met(server_instance, hydrate_only=false, &block)
80
+
81
+ return if !hydrate_only && dependencies_met?(server_instance)
76
82
  dependencies.each do |klass, options|
77
- if klass.find_by_id(server_instance.send(options[:key_name])).nil?
83
+ if hydrate_only || klass.find_by_id(server_instance.send(options[:key_name])).nil?
78
84
  server_instances = server_instance.send(options[:method_name])
79
85
  server_instances = server_instances.is_a?(Array) ? server_instances : [server_instances]
80
86
  server_instances.each do |obj|
81
- klass.create_from_instance(obj)
87
+ if hydrate_only
88
+ klass.hydrate_attributes(obj, hydrate_only, &block)
89
+ else
90
+ klass.create_from_instance(obj)
91
+ end
82
92
  end
83
93
  end
84
94
  end
data/tractor.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{tractor}
8
- s.version = "0.4.3"
8
+ s.version = "0.4.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Shane Wolf"]
12
- s.date = %q{2010-06-10}
12
+ s.date = %q{2010-06-23}
13
13
  s.description = %q{Very simple object mappings for ruby objects}
14
14
  s.email = %q{shanewolf@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -31,13 +31,12 @@ Gem::Specification.new do |s|
31
31
  "spec/spec.opts",
32
32
  "spec/spec_helper.rb",
33
33
  "spec/tractor_spec.rb",
34
- "tractor-0.4.3.gem",
35
34
  "tractor.gemspec"
36
35
  ]
37
36
  s.homepage = %q{http://github.com/gizm0duck/tractor}
38
37
  s.rdoc_options = ["--charset=UTF-8"]
39
38
  s.require_paths = ["lib"]
40
- s.rubygems_version = %q{1.3.7}
39
+ s.rubygems_version = %q{1.3.5}
41
40
  s.summary = %q{Very simple object mapping for ruby objects}
42
41
  s.test_files = [
43
42
  "spec/model/base_spec.rb",
@@ -50,7 +49,7 @@ Gem::Specification.new do |s|
50
49
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
51
50
  s.specification_version = 3
52
51
 
53
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
54
53
  s.add_runtime_dependency(%q<redis>, [">= 2.0.0"])
55
54
  s.add_runtime_dependency(%q<yajl-ruby>, [">= 0.7.6"])
56
55
  else
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tractor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 4
9
- - 3
10
- version: 0.4.3
4
+ version: 0.4.4
11
5
  platform: ruby
12
6
  authors:
13
7
  - Shane Wolf
@@ -15,41 +9,29 @@ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
11
 
18
- date: 2010-06-10 00:00:00 -07:00
12
+ date: 2010-06-23 00:00:00 -07:00
19
13
  default_executable:
20
14
  dependencies:
21
15
  - !ruby/object:Gem::Dependency
22
16
  name: redis
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
26
20
  requirements:
27
21
  - - ">="
28
22
  - !ruby/object:Gem::Version
29
- hash: 15
30
- segments:
31
- - 2
32
- - 0
33
- - 0
34
23
  version: 2.0.0
35
- type: :runtime
36
- version_requirements: *id001
24
+ version:
37
25
  - !ruby/object:Gem::Dependency
38
26
  name: yajl-ruby
39
- prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
42
30
  requirements:
43
31
  - - ">="
44
32
  - !ruby/object:Gem::Version
45
- hash: 15
46
- segments:
47
- - 0
48
- - 7
49
- - 6
50
33
  version: 0.7.6
51
- type: :runtime
52
- version_requirements: *id002
34
+ version:
53
35
  description: Very simple object mappings for ruby objects
54
36
  email: shanewolf@gmail.com
55
37
  executables: []
@@ -74,7 +56,6 @@ files:
74
56
  - spec/spec.opts
75
57
  - spec/spec_helper.rb
76
58
  - spec/tractor_spec.rb
77
- - tractor-0.4.3.gem
78
59
  - tractor.gemspec
79
60
  has_rdoc: true
80
61
  homepage: http://github.com/gizm0duck/tractor
@@ -86,27 +67,21 @@ rdoc_options:
86
67
  require_paths:
87
68
  - lib
88
69
  required_ruby_version: !ruby/object:Gem::Requirement
89
- none: false
90
70
  requirements:
91
71
  - - ">="
92
72
  - !ruby/object:Gem::Version
93
- hash: 3
94
- segments:
95
- - 0
96
73
  version: "0"
74
+ version:
97
75
  required_rubygems_version: !ruby/object:Gem::Requirement
98
- none: false
99
76
  requirements:
100
77
  - - ">="
101
78
  - !ruby/object:Gem::Version
102
- hash: 3
103
- segments:
104
- - 0
105
79
  version: "0"
80
+ version:
106
81
  requirements: []
107
82
 
108
83
  rubyforge_project:
109
- rubygems_version: 1.3.7
84
+ rubygems_version: 1.3.5
110
85
  signing_key:
111
86
  specification_version: 3
112
87
  summary: Very simple object mapping for ruby objects