simple_record 1.0.2 → 1.0.3
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/lib/simple_record.rb +89 -17
- data/test/test_simple_record.rb +69 -3
- metadata +2 -2
data/lib/simple_record.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
# AWS_ACCESS_KEY_ID='XXXXX'
|
12
12
|
# AWS_SECRET_ACCESS_KEY='YYYYY'
|
13
|
-
# RightAws::ActiveSdb.establish_connection(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY
|
13
|
+
# RightAws::ActiveSdb.establish_connection(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY)
|
14
14
|
# # Save an object
|
15
15
|
# mm = MyModel.new
|
16
16
|
# mm.name = "Travis"
|
@@ -29,7 +29,7 @@ require 'local_cache'
|
|
29
29
|
|
30
30
|
module SimpleRecord
|
31
31
|
|
32
|
-
VERSION = '1.0.
|
32
|
+
VERSION = '1.0.3'
|
33
33
|
|
34
34
|
class Base < RightAws::ActiveSdb::Base
|
35
35
|
|
@@ -124,6 +124,7 @@ VERSION = '1.0.2'
|
|
124
124
|
else
|
125
125
|
ret = self[arg.to_s]
|
126
126
|
end
|
127
|
+
return nil if ret.nil?
|
127
128
|
return un_offset_if_int(arg, ret)
|
128
129
|
end
|
129
130
|
|
@@ -153,6 +154,13 @@ VERSION = '1.0.2'
|
|
153
154
|
# @@dates = args
|
154
155
|
# puts 'dates=' + @@dates.inspect
|
155
156
|
end
|
157
|
+
|
158
|
+
@@booleans = []
|
159
|
+
def self.are_booleans(*args)
|
160
|
+
args.each do |arg|
|
161
|
+
@@booleans << arg if @@booleans.index(arg).nil?
|
162
|
+
end
|
163
|
+
end
|
156
164
|
|
157
165
|
@@virtuals=[]
|
158
166
|
def self.has_virtuals(*args)
|
@@ -184,8 +192,8 @@ VERSION = '1.0.2'
|
|
184
192
|
# puts 'val=' + @attributes[arg_id][0].inspect unless @attributes[arg_id].nil?
|
185
193
|
ret = nil
|
186
194
|
arg_id = arg.to_s + '_id'
|
187
|
-
|
188
|
-
|
195
|
+
if !@attributes[arg_id].nil? && @attributes[arg_id].size > 0 && @attributes[arg_id][0] != nil && @attributes[arg_id][0] != ''
|
196
|
+
if !@@cache_store.nil?
|
189
197
|
arg_id_val = @attributes[arg_id][0]
|
190
198
|
cache_key = self.class.cache_key(class_name, arg_id_val)
|
191
199
|
# puts 'cache_key=' + cache_key
|
@@ -502,7 +510,25 @@ VERSION = '1.0.2'
|
|
502
510
|
for d in @@dates
|
503
511
|
# puts 'converting created: ' + self['created'].inspect
|
504
512
|
if d == arg
|
505
|
-
|
513
|
+
x = to_date(x)
|
514
|
+
end
|
515
|
+
# if !self[d].nil?
|
516
|
+
# self[d].collect!{ |d2|
|
517
|
+
# if d2.is_a?(String)
|
518
|
+
# DateTime.parse(d2)
|
519
|
+
# else
|
520
|
+
# d2
|
521
|
+
# end
|
522
|
+
# }
|
523
|
+
# end
|
524
|
+
# puts 'after=' + self['created'].inspect
|
525
|
+
end
|
526
|
+
end
|
527
|
+
if !@@booleans.nil?
|
528
|
+
for b in @@booleans
|
529
|
+
# puts 'converting created: ' + self['created'].inspect
|
530
|
+
if b == arg
|
531
|
+
x = to_bool(x)
|
506
532
|
end
|
507
533
|
# if !self[d].nil?
|
508
534
|
# self[d].collect!{ |d2|
|
@@ -518,6 +544,25 @@ VERSION = '1.0.2'
|
|
518
544
|
end
|
519
545
|
x
|
520
546
|
end
|
547
|
+
|
548
|
+
|
549
|
+
def to_date(x)
|
550
|
+
if x.is_a?(String)
|
551
|
+
DateTime.parse(x)
|
552
|
+
else
|
553
|
+
x
|
554
|
+
end
|
555
|
+
|
556
|
+
end
|
557
|
+
|
558
|
+
def to_bool(x)
|
559
|
+
if x.is_a?(String)
|
560
|
+
x == "true"
|
561
|
+
else
|
562
|
+
x
|
563
|
+
end
|
564
|
+
end
|
565
|
+
|
521
566
|
|
522
567
|
def un_offset_int(x)
|
523
568
|
if x.is_a?(String)
|
@@ -621,9 +666,16 @@ This is done on getters now
|
|
621
666
|
|
622
667
|
def self.find(*params)
|
623
668
|
reload=true
|
624
|
-
|
625
|
-
|
626
|
-
|
669
|
+
first=false
|
670
|
+
all=false
|
671
|
+
select=false
|
672
|
+
select_attributes=[]
|
673
|
+
|
674
|
+
if params.size > 0
|
675
|
+
all = params[0] == :all
|
676
|
+
first = params[0] == :first
|
677
|
+
end
|
678
|
+
|
627
679
|
|
628
680
|
# Pad and Offset number attributes
|
629
681
|
options = params[1]
|
@@ -632,29 +684,49 @@ This is done on getters now
|
|
632
684
|
|
633
685
|
# puts 'after collect=' + params.inspect
|
634
686
|
|
635
|
-
results = []
|
687
|
+
results = all ? [] : nil
|
636
688
|
begin
|
637
689
|
results=super(*params)
|
638
690
|
cache_results(results)
|
639
|
-
rescue RightAws::AwsError
|
691
|
+
rescue RightAws::AwsError, RightAws::ActiveSdb::ActiveSdbError
|
640
692
|
puts "RESCUED: " + $!
|
641
|
-
if ($!.message().index("NoSuchDomain")
|
693
|
+
if ($!.message().index("NoSuchDomain") != nil)
|
694
|
+
# this is ok
|
695
|
+
elsif ($!.message() =~ @@regex_no_id)
|
696
|
+
results = nil
|
697
|
+
else
|
642
698
|
raise $!
|
643
699
|
end
|
644
700
|
end
|
645
701
|
return results
|
646
702
|
end
|
647
703
|
|
648
|
-
|
649
|
-
|
704
|
+
@@regex_no_id = /.*Couldn't find.*with ID.*/
|
705
|
+
def self.select(*params)
|
706
|
+
first=false
|
707
|
+
all=false
|
708
|
+
select=false
|
709
|
+
select_attributes=[]
|
710
|
+
|
711
|
+
if params.size > 0
|
712
|
+
all = params[0] == :all
|
713
|
+
first = params[0] == :first
|
714
|
+
end
|
715
|
+
|
716
|
+
options = params[1]
|
650
717
|
convert_condition_params(options)
|
651
|
-
|
718
|
+
|
719
|
+
results = all ? [] : nil
|
652
720
|
begin
|
653
721
|
results=super(*params)
|
654
722
|
cache_results(results)
|
655
|
-
rescue RightAws::AwsError
|
723
|
+
rescue RightAws::AwsError, RightAws::ActiveSdb::ActiveSdbError
|
656
724
|
puts "RESCUED: " + $!
|
657
|
-
if ($!.message().index("NoSuchDomain")
|
725
|
+
if ($!.message().index("NoSuchDomain") != nil)
|
726
|
+
# this is ok
|
727
|
+
elsif ($!.message() =~ @@regex_no_id)
|
728
|
+
results = nil
|
729
|
+
else
|
658
730
|
raise $!
|
659
731
|
end
|
660
732
|
end
|
@@ -667,7 +739,7 @@ This is done on getters now
|
|
667
739
|
conditions = options[:conditions]
|
668
740
|
if !conditions.nil? && conditions.size > 1
|
669
741
|
# all after first are values
|
670
|
-
conditions
|
742
|
+
conditions.collect! { |x|
|
671
743
|
self.pad_and_offset(x)
|
672
744
|
}
|
673
745
|
end
|
data/test/test_simple_record.rb
CHANGED
@@ -1,8 +1,74 @@
|
|
1
1
|
require "test/unit"
|
2
|
-
require "simple_record"
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + "/../lib/simple_record")
|
3
|
+
require "yaml"
|
4
|
+
require 'right_aws'
|
5
|
+
require 'my_model'
|
3
6
|
|
4
7
|
class TestSimpleRecord < Test::Unit::TestCase
|
5
|
-
|
6
|
-
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@config = YAML::load(File.read('test-config.yml'))
|
11
|
+
puts 'akey=' + @config['amazon']['access_key']
|
12
|
+
puts 'skey=' + @config['amazon']['secret_key']
|
13
|
+
RightAws::ActiveSdb.establish_connection(@config['amazon']['access_key'], @config['amazon']['secret_key'])
|
14
|
+
SimpleRecord::Base.set_domain_prefix("simplerecord_tests_")
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
RightAws::ActiveSdb.close_connection()
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_save_get
|
22
|
+
mm = MyModel.new
|
23
|
+
mm.name = "Travis"
|
24
|
+
mm.age = 32
|
25
|
+
mm.cool = true
|
26
|
+
mm.save
|
27
|
+
id = mm.id
|
28
|
+
puts 'id=' + id.to_s
|
29
|
+
# Get the object back
|
30
|
+
mm2 = MyModel.find(id)
|
31
|
+
puts 'got=' + mm2.name + ' and he/she is ' + mm2.age.to_s + ' years old and he/she is cool? ' + mm2.cool.to_s
|
32
|
+
puts mm2.cool.class.name
|
33
|
+
assert mm2.id == mm.id
|
34
|
+
assert mm2.age == mm.age
|
35
|
+
assert mm2.cool == mm.cool
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_callbacks
|
39
|
+
# these DO NOT work right now, all objects get all callbacks
|
40
|
+
# I tried like this, seem to be getting somewhere.
|
41
|
+
#
|
42
|
+
# class << self;
|
43
|
+
# @@callbacks.each do |callback|
|
44
|
+
# #we first have to make an initialized array for each of the callbacks, to prevent problems if they are not called
|
45
|
+
# puts 'setting callback ' + callback.to_s + ' on ' + self.inspect
|
46
|
+
# eval %{
|
47
|
+
#
|
48
|
+
# # add the methods to the class
|
49
|
+
# def #{callback}(*args)
|
50
|
+
# args.each do |arg|
|
51
|
+
# cb_names = self.instance_variable_get(:@#{callback}_names)
|
52
|
+
# cb_names = [] if cb_names.nil?
|
53
|
+
# cb_names << arg.to_s if cb_names.index(arg.to_s).nil?
|
54
|
+
# self.instance_variable_set(:@#{callback}_names, cb_names)
|
55
|
+
# end
|
56
|
+
## asdf @@#{callback}_names=args.map{|arg| arg.to_s}
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# # now we run the methods in the callback array for this class
|
60
|
+
#send :define_method, "run_#{callback}" do
|
61
|
+
## def run_#{callback}
|
62
|
+
# cb_names = self.instance_variable_get(:@#{callback}_names)
|
63
|
+
# cb_names.each { |name|
|
64
|
+
# unless eval(name)
|
65
|
+
# return false
|
66
|
+
# end
|
67
|
+
# }
|
68
|
+
# return true
|
69
|
+
# end
|
70
|
+
# }
|
71
|
+
# end
|
72
|
+
# end
|
7
73
|
end
|
8
74
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-05-19 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|