tractor 0.4.3 → 0.4.4

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/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