tractor 0.4.6 → 0.4.7
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|