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 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.6
1
+ 0.4.7
@@ -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
- Tractor.redis["#{self.class}:#{self.id}"] = @encoder.encode(self.send(:attribute_store))
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["#{self}:#{id}"]
162
- return nil if obj_data.nil?
163
- parser = Yajl::Parser.new
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)
@@ -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["Tractor::Model::Game:1"].should_not be_nil
166
- parser = Yajl::Parser.new
167
- redis_game = parser.parse(redis["Tractor::Model::Game:1"])
168
- redis_game["id"].should == "1"
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
- parser = Yajl::Parser.new
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.6"
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-09-15}
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: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 6
10
- version: 0.4.6
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-09-15 00:00:00 -07:00
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: []