tractor 0.4.6 → 0.4.7
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/Rakefile +0 -1
- data/VERSION +1 -1
- data/lib/tractor/model/base.rb +5 -7
- data/spec/model/base_spec.rb +5 -8
- data/tractor.gemspec +2 -5
- metadata +4 -20
data/Rakefile
CHANGED
@@ -11,7 +11,6 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/gizm0duck/tractor"
|
12
12
|
gem.authors = ["Shane Wolf"]
|
13
13
|
gem.add_dependency "redis", ">=2.0.0"
|
14
|
-
gem.add_dependency "yajl-ruby", ">=0.7.6"
|
15
14
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
15
|
end
|
17
16
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.7
|
data/lib/tractor/model/base.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'base64'
|
2
|
-
require 'yajl'
|
3
2
|
|
4
3
|
module Tractor
|
5
4
|
|
@@ -78,7 +77,6 @@ module Tractor
|
|
78
77
|
def initialize(attributes={})
|
79
78
|
@attribute_store = {}
|
80
79
|
@association_store = {}
|
81
|
-
@encoder = Yajl::Encoder.new
|
82
80
|
attributes.each do |k,v|
|
83
81
|
send("#{k}=", v)
|
84
82
|
end
|
@@ -86,7 +84,8 @@ module Tractor
|
|
86
84
|
|
87
85
|
def save
|
88
86
|
raise MissingIdError, "Probably wanna set an id" if self.id.nil? || self.id.to_s.empty?
|
89
|
-
|
87
|
+
|
88
|
+
Tractor.redis.mapped_hmset("#{self.class}:#{self.id}", self.send(:attribute_store))
|
90
89
|
Tractor.redis.sadd "#{self.class}:all", self.id
|
91
90
|
add_to_indices
|
92
91
|
add_to_associations
|
@@ -158,10 +157,9 @@ module Tractor
|
|
158
157
|
end
|
159
158
|
|
160
159
|
def find_by_id(id)
|
161
|
-
obj_data = Tractor.redis
|
162
|
-
return nil if obj_data.nil?
|
163
|
-
|
164
|
-
new(parser.parse(obj_data))
|
160
|
+
obj_data = Tractor.redis.mapped_hmget("#{self}:#{id}", *attributes.keys)
|
161
|
+
return nil if obj_data.reject{|k,v| v.nil?}.empty?
|
162
|
+
new(obj_data)
|
165
163
|
end
|
166
164
|
|
167
165
|
# use method missing to do craziness, or define a find_by on each index (BETTER)
|
data/spec/model/base_spec.rb
CHANGED
@@ -162,12 +162,10 @@ describe Tractor::Model::Base do
|
|
162
162
|
game = Tractor::Model::Game.new({:id => '1', :board => "large", :flying_object => "disc"})
|
163
163
|
game.save
|
164
164
|
|
165
|
-
redis
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
redis_game["board"].should == "large"
|
170
|
-
redis_game["flying_object"].should == "disc"
|
165
|
+
redis_game_attributes = Tractor.redis.mapped_hmget("Tractor::Model::Game:1", "id", "board", "flying_object")
|
166
|
+
redis_game_attributes["id"].should == "1"
|
167
|
+
redis_game_attributes["board"].should == "large"
|
168
|
+
redis_game_attributes["flying_object"].should == "disc"
|
171
169
|
end
|
172
170
|
|
173
171
|
it "appends the new object to the Game set" do
|
@@ -238,8 +236,7 @@ describe Tractor::Model::Base do
|
|
238
236
|
|
239
237
|
it "should write attributes to redis" do
|
240
238
|
sammich = Sammich.create({ :id => '1', :product => "Veggie Sammich" })
|
241
|
-
|
242
|
-
redis_sammich = parser.parse(redis["Sammich:1"])
|
239
|
+
redis_sammich = Tractor.redis.mapped_hmget("Sammich:1", "id", "product")
|
243
240
|
redis_sammich["id"].should == "1"
|
244
241
|
redis_sammich["product"].should == "Veggie Sammich"
|
245
242
|
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.
|
8
|
+
s.version = "0.4.7"
|
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-
|
12
|
+
s.date = %q{2010-10-29}
|
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 = [
|
@@ -51,14 +51,11 @@ Gem::Specification.new do |s|
|
|
51
51
|
|
52
52
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
53
53
|
s.add_runtime_dependency(%q<redis>, [">= 2.0.0"])
|
54
|
-
s.add_runtime_dependency(%q<yajl-ruby>, [">= 0.7.6"])
|
55
54
|
else
|
56
55
|
s.add_dependency(%q<redis>, [">= 2.0.0"])
|
57
|
-
s.add_dependency(%q<yajl-ruby>, [">= 0.7.6"])
|
58
56
|
end
|
59
57
|
else
|
60
58
|
s.add_dependency(%q<redis>, [">= 2.0.0"])
|
61
|
-
s.add_dependency(%q<yajl-ruby>, [">= 0.7.6"])
|
62
59
|
end
|
63
60
|
end
|
64
61
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tractor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 7
|
10
|
+
version: 0.4.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Shane Wolf
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-10-29 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -34,22 +34,6 @@ dependencies:
|
|
34
34
|
version: 2.0.0
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: yajl-ruby
|
39
|
-
prerelease: false
|
40
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ">="
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 15
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
- 7
|
49
|
-
- 6
|
50
|
-
version: 0.7.6
|
51
|
-
type: :runtime
|
52
|
-
version_requirements: *id002
|
53
37
|
description: Very simple object mappings for ruby objects
|
54
38
|
email: shanewolf@gmail.com
|
55
39
|
executables: []
|