simple_record 1.1.46 → 1.1.47
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 +29 -53
- data/lib/simple_record/errors.rb +40 -0
- data/test/results_tests.rb +37 -0
- data/test/test_base.rb +28 -0
- data/test/test_helpers.rb +15 -0
- data/test/test_simple_record.rb +14 -46
- metadata +4 -1
data/lib/simple_record.rb
CHANGED
@@ -100,7 +100,8 @@ module SimpleRecord
|
|
100
100
|
@errors=SimpleRecord_errors.new
|
101
101
|
@dirty = {}
|
102
102
|
|
103
|
-
@attributes = {}
|
103
|
+
@attributes = {} # sdb values
|
104
|
+
@attributes_rb = {} # ruby values
|
104
105
|
@new_record = true
|
105
106
|
|
106
107
|
end
|
@@ -414,8 +415,18 @@ module SimpleRecord
|
|
414
415
|
ok
|
415
416
|
end
|
416
417
|
|
417
|
-
def save_attributes(
|
418
|
-
|
418
|
+
def save_attributes(atts)
|
419
|
+
# puts 'atts=' + atts.inspect
|
420
|
+
ret = super(atts)
|
421
|
+
# puts '@atts=' + @attributes.inspect
|
422
|
+
atts.each_pair do |k, v|
|
423
|
+
if k.is_a?(Symbol)
|
424
|
+
@attributes[k.to_s] = v
|
425
|
+
@attributes.delete(k)
|
426
|
+
end
|
427
|
+
end
|
428
|
+
# puts '@atts2=' + @attributes.inspect
|
429
|
+
@attributes_rb.clear # clear out the ruby versions so they can reload on next get.
|
419
430
|
if ret
|
420
431
|
self.class.cache_results(self)
|
421
432
|
end
|
@@ -500,18 +511,19 @@ module SimpleRecord
|
|
500
511
|
def get_attribute(arg)
|
501
512
|
# Check if this arg is already converted
|
502
513
|
arg_s = arg.to_s
|
503
|
-
instance_var = ("@" + arg_s)
|
514
|
+
# instance_var = ("@" + arg_s)
|
504
515
|
# puts "defined?(#{instance_var.to_sym}) " + (defined?(instance_var.to_sym)).inspect
|
505
516
|
# if defined?(instance_var.to_sym) # this returns "method" for some reason??
|
506
517
|
# puts "attribute #{instance_var} is defined"
|
507
|
-
ret = instance_variable_get(instance_var)
|
518
|
+
ret = @attributes_rb[arg_s] # instance_variable_get(instance_var)
|
508
519
|
# puts 'ret=' + ret.to_s
|
509
520
|
return ret if !ret.nil?
|
510
521
|
# end
|
511
522
|
ret = get_attribute_sdb(arg)
|
512
523
|
ret = sdb_to_ruby(arg, ret)
|
513
|
-
# puts "Setting instance var #{
|
514
|
-
instance_variable_set(instance_var, ret)
|
524
|
+
# puts "Setting instance var #{arg_s} to #{ret}"
|
525
|
+
# instance_variable_set(instance_var, ret)
|
526
|
+
@attributes_rb[arg_s] = ret
|
515
527
|
return ret
|
516
528
|
end
|
517
529
|
|
@@ -523,17 +535,19 @@ module SimpleRecord
|
|
523
535
|
attname = name.to_s + '_id'
|
524
536
|
attvalue = value.nil? ? nil : value.id
|
525
537
|
else
|
526
|
-
attname = name
|
538
|
+
attname = name.to_s
|
527
539
|
attvalue = value
|
528
540
|
end
|
529
|
-
|
541
|
+
attvalue = strip_array(attvalue)
|
530
542
|
make_dirty(attname, attvalue)
|
531
|
-
instance_var = "@" + attname.to_s
|
532
543
|
# puts 'ARG=' + arg.to_s
|
533
544
|
sdb_val = ruby_to_sdb(name, attvalue)
|
534
|
-
@attributes[attname
|
535
|
-
|
536
|
-
|
545
|
+
@attributes[attname] = sdb_val
|
546
|
+
attvalue = wrap_if_required(name, value, sdb_val)
|
547
|
+
@attributes_rb[attname] = attvalue
|
548
|
+
|
549
|
+
# instance_var = "@" + attname.to_s
|
550
|
+
# instance_variable_set(instance_var, attvalue)
|
537
551
|
end
|
538
552
|
|
539
553
|
def delete_niled(to_delete)
|
@@ -548,8 +562,8 @@ module SimpleRecord
|
|
548
562
|
super()
|
549
563
|
end
|
550
564
|
|
551
|
-
def update_attributes(
|
552
|
-
return save_attributes(
|
565
|
+
def update_attributes(atts)
|
566
|
+
return save_attributes(atts)
|
553
567
|
end
|
554
568
|
|
555
569
|
def self.quote_regexp(a, re)
|
@@ -696,44 +710,6 @@ module SimpleRecord
|
|
696
710
|
|
697
711
|
end
|
698
712
|
|
699
|
-
class SimpleRecord_errors
|
700
|
-
def initialize(*params)
|
701
|
-
super(*params)
|
702
|
-
@errors=[]
|
703
|
-
end
|
704
|
-
|
705
|
-
def add_to_base(value)
|
706
|
-
@errors+=[value]
|
707
|
-
end
|
708
|
-
|
709
|
-
def add(attribute, value)
|
710
|
-
@errors+=["#{attribute.to_s} #{value}"]
|
711
|
-
end
|
712
|
-
|
713
|
-
def count
|
714
|
-
return length
|
715
|
-
end
|
716
|
-
|
717
|
-
def length
|
718
|
-
return @errors.length
|
719
|
-
end
|
720
|
-
|
721
|
-
def size
|
722
|
-
return length
|
723
|
-
end
|
724
|
-
|
725
|
-
def full_messages
|
726
|
-
return @errors
|
727
|
-
end
|
728
|
-
|
729
|
-
def clear
|
730
|
-
@errors.clear
|
731
|
-
end
|
732
|
-
|
733
|
-
def empty?
|
734
|
-
@errors.empty?
|
735
|
-
end
|
736
|
-
end
|
737
713
|
|
738
714
|
class Activerecordtosdb_subrecord_array
|
739
715
|
def initialize(subname, referencename, referencevalue)
|
data/lib/simple_record/errors.rb
CHANGED
@@ -12,6 +12,46 @@ module SimpleRecord
|
|
12
12
|
@record = record
|
13
13
|
end
|
14
14
|
end
|
15
|
+
|
16
|
+
|
17
|
+
class SimpleRecord_errors
|
18
|
+
def initialize(*params)
|
19
|
+
super(*params)
|
20
|
+
@errors=[]
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_to_base(value)
|
24
|
+
@errors+=[value]
|
25
|
+
end
|
26
|
+
|
27
|
+
def add(attribute, value)
|
28
|
+
@errors+=["#{attribute.to_s} #{value}"]
|
29
|
+
end
|
30
|
+
|
31
|
+
def count
|
32
|
+
return length
|
33
|
+
end
|
34
|
+
|
35
|
+
def length
|
36
|
+
return @errors.length
|
37
|
+
end
|
38
|
+
|
39
|
+
def size
|
40
|
+
return length
|
41
|
+
end
|
42
|
+
|
43
|
+
def full_messages
|
44
|
+
return @errors
|
45
|
+
end
|
46
|
+
|
47
|
+
def clear
|
48
|
+
@errors.clear
|
49
|
+
end
|
50
|
+
|
51
|
+
def empty?
|
52
|
+
@errors.empty?
|
53
|
+
end
|
54
|
+
end
|
15
55
|
|
16
56
|
end
|
17
57
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# These ones take longer to run
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require File.join(File.dirname(__FILE__), "/../lib/simple_record")
|
5
|
+
require File.join(File.dirname(__FILE__), "./test_helpers")
|
6
|
+
require File.join(File.dirname(__FILE__), "./test_base")
|
7
|
+
require "yaml"
|
8
|
+
require 'aws'
|
9
|
+
require 'my_model'
|
10
|
+
require 'my_child_model'
|
11
|
+
require 'active_support'
|
12
|
+
|
13
|
+
# Tests for SimpleRecord
|
14
|
+
#
|
15
|
+
|
16
|
+
class TestResultsArray < TestBase
|
17
|
+
|
18
|
+
|
19
|
+
# ensures that it uses next token and what not
|
20
|
+
def test_big_result
|
21
|
+
i = TestHelpers.clear_out_my_models
|
22
|
+
num_made = 110
|
23
|
+
num_made.times do |i|
|
24
|
+
mm = MyModel.create(:name=>"Travis", :age=>i, :cool=>true)
|
25
|
+
end
|
26
|
+
rs = MyModel.find(:all) # should get 100 at a time
|
27
|
+
assert rs.size == num_made
|
28
|
+
i = 0
|
29
|
+
rs.each do |x|
|
30
|
+
#puts 'x=' + x.id
|
31
|
+
i+=1
|
32
|
+
end
|
33
|
+
assert i == num_made
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
end
|
data/test/test_base.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.join(File.dirname(__FILE__), "/../lib/simple_record")
|
3
|
+
require File.join(File.dirname(__FILE__), "./test_helpers")
|
4
|
+
require "yaml"
|
5
|
+
require 'aws'
|
6
|
+
require 'my_model'
|
7
|
+
require 'my_child_model'
|
8
|
+
require 'active_support'
|
9
|
+
|
10
|
+
class TestBase < Test::Unit::TestCase
|
11
|
+
|
12
|
+
def setup
|
13
|
+
@config = YAML::load(File.open(File.expand_path("~/.test-configs/simple_record.yml")))
|
14
|
+
#puts 'inspecting config = ' + @config.inspect
|
15
|
+
|
16
|
+
# Establish AWS connection directly
|
17
|
+
@@sdb = Aws::SdbInterface.new(@config['amazon']['access_key'], @config['amazon']['secret_key'], {:connection_mode => :per_request, :protocol => "http", :port => 80})
|
18
|
+
|
19
|
+
SimpleRecord.establish_connection(@config['amazon']['access_key'], @config['amazon']['secret_key'], :connection_mode=>:single)
|
20
|
+
SimpleRecord::Base.set_domain_prefix("simplerecord_tests_")
|
21
|
+
end
|
22
|
+
|
23
|
+
def teardown
|
24
|
+
SimpleRecord.close_connection
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
end
|
data/test/test_simple_record.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
require File.
|
2
|
+
require File.join(File.dirname(__FILE__), "/../lib/simple_record")
|
3
|
+
require File.join(File.dirname(__FILE__), "./test_helpers")
|
4
|
+
require File.join(File.dirname(__FILE__), "./test_base")
|
3
5
|
require "yaml"
|
4
6
|
require 'aws'
|
5
7
|
require 'my_model'
|
@@ -9,22 +11,7 @@ require 'active_support'
|
|
9
11
|
# Tests for SimpleRecord
|
10
12
|
#
|
11
13
|
|
12
|
-
class TestSimpleRecord <
|
13
|
-
|
14
|
-
def setup
|
15
|
-
@config = YAML::load(File.open(File.expand_path("~/.test-configs/simple_record.yml")))
|
16
|
-
#puts 'inspecting config = ' + @config.inspect
|
17
|
-
|
18
|
-
# Establish AWS connection directly
|
19
|
-
@@sdb = Aws::SdbInterface.new(@config['amazon']['access_key'], @config['amazon']['secret_key'], {:connection_mode => :per_request, :protocol => "http", :port => 80})
|
20
|
-
|
21
|
-
SimpleRecord.establish_connection(@config['amazon']['access_key'], @config['amazon']['secret_key'], :connection_mode=>:single)
|
22
|
-
SimpleRecord::Base.set_domain_prefix("simplerecord_tests_")
|
23
|
-
end
|
24
|
-
|
25
|
-
def teardown
|
26
|
-
SimpleRecord.close_connection
|
27
|
-
end
|
14
|
+
class TestSimpleRecord < TestBase
|
28
15
|
|
29
16
|
|
30
17
|
def test_save_get
|
@@ -238,34 +225,6 @@ class TestSimpleRecord < Test::Unit::TestCase
|
|
238
225
|
|
239
226
|
end
|
240
227
|
|
241
|
-
# ensures that it uses next token and what not
|
242
|
-
def test_big_result
|
243
|
-
i = clear_out_my_models
|
244
|
-
num_made = 110
|
245
|
-
num_made.times do |i|
|
246
|
-
mm = MyModel.create(:name=>"Travis", :age=>i, :cool=>true)
|
247
|
-
end
|
248
|
-
rs = MyModel.find(:all) # should get 100 at a time
|
249
|
-
assert rs.size == num_made
|
250
|
-
i = 0
|
251
|
-
rs.each do |x|
|
252
|
-
#puts 'x=' + x.id
|
253
|
-
i+=1
|
254
|
-
end
|
255
|
-
assert i == num_made
|
256
|
-
end
|
257
|
-
|
258
|
-
def clear_out_my_models
|
259
|
-
mms = MyModel.find(:all)
|
260
|
-
puts 'mms.size=' + mms.size.to_s
|
261
|
-
i = 0
|
262
|
-
mms.each do |x|
|
263
|
-
puts 'deleting=' + i.to_s
|
264
|
-
x.delete
|
265
|
-
i+=1
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
228
|
def test_results_array
|
270
229
|
mms = MyModel.find(:all) # select 2
|
271
230
|
assert !mms.first.nil?
|
@@ -363,7 +322,7 @@ class TestSimpleRecord < Test::Unit::TestCase
|
|
363
322
|
|
364
323
|
def test_null
|
365
324
|
puts Time.now.to_i.to_s
|
366
|
-
clear_out_my_models
|
325
|
+
TestHelpers.clear_out_my_models
|
367
326
|
|
368
327
|
mm = MyModel.new(:name=>"birthay is null")
|
369
328
|
mm.save
|
@@ -495,4 +454,13 @@ class TestSimpleRecord < Test::Unit::TestCase
|
|
495
454
|
assert mm.name = mm2.name
|
496
455
|
end
|
497
456
|
|
457
|
+
def test_update_attributes
|
458
|
+
mm = MyModel.new({:name=>"myname"})
|
459
|
+
mm.save
|
460
|
+
|
461
|
+
mm.update_attributes(:name=>"name2", :age=>21)
|
462
|
+
assert mm.name == "name2", "Name is #{mm.name}"
|
463
|
+
assert mm.age == 21
|
464
|
+
end
|
465
|
+
|
498
466
|
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.1.
|
4
|
+
version: 1.1.47
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
@@ -79,5 +79,8 @@ test_files:
|
|
79
79
|
- test/my_child_model.rb
|
80
80
|
- test/my_model.rb
|
81
81
|
- test/paging_array_test.rb
|
82
|
+
- test/results_tests.rb
|
82
83
|
- test/temp_test.rb
|
84
|
+
- test/test_base.rb
|
85
|
+
- test/test_helpers.rb
|
83
86
|
- test/test_simple_record.rb
|