simple_record 1.1.67 → 1.1.68

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 CHANGED
@@ -135,9 +135,8 @@ module SimpleRecord
135
135
 
136
136
  attr_accessor :errors
137
137
 
138
- @domain_prefix = ''
139
138
  class << self;
140
- attr_accessor :domain_prefix;
139
+ attr_accessor :domain_prefix
141
140
  end
142
141
 
143
142
  #@domain_name_for_class = nil
@@ -172,14 +171,14 @@ module SimpleRecord
172
171
 
173
172
 
174
173
  def domain
175
- super # super.domain
174
+ self.class.domain # super # super.domain
176
175
  end
177
176
 
178
177
  def self.domain
179
178
  #return self.get_domain_name unless self.get_domain_name.nil?
180
179
  d = super
181
- #puts 'in self.domain, d=' + d.to_s + ' domain_prefix=' + SimpleRecord::Base.domain_prefix.to_s
182
- domain_name_for_class = SimpleRecord::Base.domain_prefix + d.to_s
180
+ puts 'in self.domain, d=' + d.to_s + ' domain_prefix=' + SimpleRecord::Base.domain_prefix.to_s
181
+ domain_name_for_class = (SimpleRecord::Base.domain_prefix || "") + d.to_s
183
182
  #self.set_domain_name(domain_name_for_class)
184
183
  domain_name_for_class
185
184
  end
@@ -221,11 +220,11 @@ module SimpleRecord
221
220
  # puts "Marking #{arg} dirty with #{value}"
222
221
  if @dirty.include?(sdb_att_name)
223
222
  old = @dirty[sdb_att_name]
224
- # puts "Was already dirty #{old}"
223
+ # puts "#{sdb_att_name} was already dirty #{old}"
225
224
  @dirty.delete(sdb_att_name) if value == old
226
225
  else
227
- old = get_attribute_sdb(arg)
228
- # puts "dirtifying old=#{old} to new=#{value}"
226
+ old = get_attribute(arg)
227
+ # puts "dirtifying #{sdb_att_name} old=#{old.inspect} to new=#{value.inspect}"
229
228
  @dirty[sdb_att_name] = old if value != old
230
229
  end
231
230
  end
@@ -338,11 +337,10 @@ module SimpleRecord
338
337
  options[:dirty_atts] = @dirty
339
338
  end
340
339
  to_delete = get_atts_to_delete # todo: this should use the @dirty hash now
341
- # puts 'done to_delete ' + to_delete.inspect
342
- # puts 'options=' + options.inspect
343
340
  SimpleRecord.stats.puts += 1
341
+ # puts 'SELF BEFORE super=' + self.inspect
344
342
  if super(options)
345
- # puts 'SAVED super'
343
+ # puts 'SELF AFTER super=' + self.inspect
346
344
  self.class.cache_results(self)
347
345
  delete_niled(to_delete)
348
346
  if (is_create ? run_after_create : run_after_update) && run_after_save
@@ -624,6 +622,11 @@ module SimpleRecord
624
622
  end
625
623
  end
626
624
 
625
+ def self.create(attributes={})
626
+ # puts "About to create in domain #{domain}"
627
+ super
628
+ end
629
+
627
630
  @@regex_no_id = /.*Couldn't find.*with ID.*/
628
631
 
629
632
  #
@@ -29,7 +29,7 @@ module SimpleRecord
29
29
  if arg.is_a?(Hash)
30
30
  # then attribute may have extra options
31
31
  arg_options = arg
32
- arg = arg_options[:name]
32
+ arg = arg_options[:name].to_sym
33
33
  end
34
34
  attr = Attribute.new(:string, arg_options)
35
35
  defined_attributes[arg] = attr if defined_attributes[arg].nil?
@@ -1,4 +1,3 @@
1
- require 'attr_encrypted'
2
1
 
3
2
  class ModelWithEnc < SimpleRecord::Base
4
3
  has_strings :name,
data/test/test_base.rb CHANGED
@@ -9,15 +9,10 @@ require 'active_support'
9
9
 
10
10
  class TestBase < Test::Unit::TestCase
11
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
12
 
16
- # Establish AWS connection directly
17
- @@sdb = Aws::SdbInterface.new(@config['amazon']['access_key'], @config['amazon']['secret_key'], {:connection_mode => :per_request})
13
+ def setup
14
+ reset_connection()
18
15
 
19
- SimpleRecord.establish_connection(@config['amazon']['access_key'], @config['amazon']['secret_key'], :connection_mode=>:single)
20
- SimpleRecord::Base.set_domain_prefix("simplerecord_tests_")
21
16
  end
22
17
 
23
18
  def teardown
@@ -25,4 +20,16 @@ class TestBase < Test::Unit::TestCase
25
20
  end
26
21
 
27
22
 
23
+ def reset_connection
24
+ @config = YAML::load(File.open(File.expand_path("~/.test-configs/simple_record.yml")))
25
+ #puts 'inspecting config = ' + @config.inspect
26
+
27
+ SimpleRecord::Base.set_domain_prefix("simplerecord_tests_")
28
+ SimpleRecord.establish_connection(@config['amazon']['access_key'], @config['amazon']['secret_key'], :connection_mode=>:single)
29
+
30
+ # Establish AWS connection directly
31
+ @@sdb = Aws::SdbInterface.new(@config['amazon']['access_key'], @config['amazon']['secret_key'], {:connection_mode => :per_request})
32
+
33
+ end
34
+
28
35
  end
@@ -0,0 +1,79 @@
1
+ require 'test/unit'
2
+ require File.expand_path(File.dirname(__FILE__) + "/../lib/simple_record")
3
+ require "yaml"
4
+ require 'aws'
5
+ require 'my_model'
6
+ require 'my_child_model'
7
+ require 'active_support'
8
+ require 'test_base'
9
+
10
+
11
+ class Person < SimpleRecord::Base
12
+ has_strings :name, :i_as_s
13
+ has_ints :age
14
+ end
15
+ class DirtyTest < TestBase
16
+
17
+ def setup
18
+ super
19
+
20
+ Person.create_domain
21
+ @person = Person.new(:name => 'old', :age => 70)
22
+ @person.save
23
+
24
+ assert !@person.changed?
25
+ assert !@person.name_changed?
26
+ end
27
+
28
+ def teardown
29
+ Person.delete_domain
30
+ SimpleRecord.close_connection
31
+ end
32
+
33
+ def test_same_value_are_not_dirty
34
+ @person.name = "old"
35
+
36
+ assert !@person.changed?
37
+ assert !@person.name_changed?
38
+
39
+ @person.age = 70
40
+ puts 'age_change2=' + @person.age_change.inspect
41
+ assert !@person.changed?
42
+ assert !@person.age_changed?
43
+ end
44
+
45
+ def test_reverted_changes_are_not_dirty
46
+ @person.name = "new"
47
+ assert @person.changed?
48
+ assert @person.name_changed?
49
+
50
+ @person.name = "old"
51
+ assert !@person.changed?
52
+ assert !@person.name_changed?
53
+
54
+ @person.age = 15
55
+ assert @person.changed?
56
+ assert @person.age_changed?
57
+
58
+ @person.age = 70
59
+ puts 'age_change2=' + @person.age_change.inspect
60
+ assert !@person.changed?
61
+ assert !@person.age_changed?
62
+ end
63
+
64
+ def test_storing_int_as_string
65
+ @person.i_as_s = 5
66
+ assert @person.changed?
67
+ assert @person.i_as_s_changed?
68
+ @person.save
69
+
70
+ sleep 2
71
+
72
+ @person.i_as_s = 5
73
+ puts 'i_as_s_changed=' + @person.i_as_s_change.inspect
74
+ # Maybe this should fail? What do we expect this behavior to be?
75
+ # assert !@person.changed?
76
+ # assert !@person.i_as_s_changed?
77
+
78
+ end
79
+ end
@@ -0,0 +1,43 @@
1
+ require 'test/unit'
2
+ require File.expand_path(File.dirname(__FILE__) + "/../lib/simple_record")
3
+ require "yaml"
4
+ require 'aws'
5
+ require 'my_model'
6
+ require 'my_child_model'
7
+ require 'active_support'
8
+ require 'test_base'
9
+
10
+
11
+ class Person < SimpleRecord::Base
12
+ has_strings :name, :i_as_s
13
+ has_ints :age
14
+ end
15
+ class TestGlobalOptions < TestBase
16
+
17
+ def setup
18
+
19
+ SimpleRecord::Base.set_domain_prefix("someprefix_")
20
+
21
+ super
22
+ end
23
+
24
+ def test_domain_prefix
25
+
26
+ # SimpleRecord::Base.set_domain_prefix("someprefix_")
27
+
28
+ p = Person.create(:name=>"my prefix name")
29
+
30
+ sleep 1
31
+
32
+ sdb_atts = @@sdb.select("select * from someprefix_people")
33
+ puts 'sdb_atts=' + sdb_atts.inspect
34
+
35
+ @@sdb.delete_domain("someprefix_people") # doing it here so it's done before assertions might fail
36
+
37
+ assert sdb_atts[:items].size == 1, "hmmm, not size 1: " + sdb_atts[:items].size.to_s
38
+
39
+
40
+
41
+ end
42
+
43
+ end
@@ -21,6 +21,7 @@ class TestSimpleRecord < TestBase
21
21
  mm.age = 32
22
22
  mm.cool = true
23
23
  mm.save
24
+ sleep 1
24
25
 
25
26
  assert !mm.created.nil?
26
27
  assert !mm.updated.nil?
@@ -53,6 +54,40 @@ class TestSimpleRecord < TestBase
53
54
  assert mm2.age.nil?, "doh, age is " + mm2.age.inspect
54
55
  end
55
56
 
57
+
58
+
59
+ def test_updates
60
+ mm = MyModel.new
61
+ mm.name = "Travis"
62
+ mm.age = 32
63
+ mm.cool = true
64
+ mm.s1 = "Initial value"
65
+ mm.save
66
+ id = mm.id
67
+ sleep 1
68
+
69
+ mm = MyModel.find(id)
70
+ mm.name = "Travis2"
71
+ mm.age = 10
72
+ mm.cool = false
73
+ mm.s1 = "" # test blank string
74
+
75
+ puts 'mm=' + mm.inspect
76
+ mm.save
77
+ sleep 1
78
+
79
+ puts 'mm2=' + mm.inspect
80
+
81
+ assert mm.s1 == "", "mm.s1 is not empty string, it is " + mm.s1.inspect
82
+
83
+ mm = MyModel.find(id)
84
+ assert mm.name == "Travis2"
85
+ assert mm.age == 10
86
+ assert mm.cool == false
87
+ assert mm.s1 == "", "mm.s1 is not empty string, it is #{mm.s1.inspect}"
88
+
89
+ end
90
+
56
91
  def test_funky_values
57
92
  mm = MyModel.new(:name=>"Funky")
58
93
  mm.s1 = "other/2009-11-10/04/84.eml" # reported here: http://groups.google.com/group/simple-record/browse_thread/thread/3659e82491d03a2c?hl=en
@@ -90,6 +125,7 @@ class TestSimpleRecord < TestBase
90
125
  mm.cool = false
91
126
  items << mm
92
127
  MyModel.batch_save(items)
128
+ sleep 1
93
129
  items.each do |item|
94
130
  puts 'id=' + item.id
95
131
  new_item = MyModel.find(item.id)
@@ -138,6 +174,7 @@ class TestSimpleRecord < TestBase
138
174
  # test queued callback before_create
139
175
  mm.name = "Travis"
140
176
  assert mm.save
177
+ sleep 1
141
178
  # now nickname should be set on before_create
142
179
  assert mm.nickname == mm.name
143
180
 
@@ -183,6 +220,8 @@ class TestSimpleRecord < TestBase
183
220
  mmc.x = mm
184
221
  mmc.save
185
222
 
223
+ sleep 1
224
+
186
225
  mmc2 = MyChildModel.find(mmc.id)
187
226
  assert mmc2.my_model_id == mmc.my_model_id, "mm2.my_model_id=#{mmc2.my_model_id} mmc.my_model_id=#{mmc.my_model_id}"
188
227
  puts 'setting my_model to nil'
@@ -198,6 +237,8 @@ class TestSimpleRecord < TestBase
198
237
  assert mmc2.my_model_id == nil
199
238
  assert mmc2.my_model == nil, "my_model not nil? #{mmc2.my_model.inspect}"
200
239
 
240
+ sleep 1
241
+
201
242
  mmc3 = MyChildModel.find(mmc.id)
202
243
  puts "mmc3 1 =" + mmc3.inspect
203
244
  assert mmc3.my_model_id == nil, "my_model_id not nil? #{mmc3.my_model_id.inspect}"
@@ -205,14 +246,15 @@ class TestSimpleRecord < TestBase
205
246
 
206
247
  mm3 = MyModel.new(:name=>"test")
207
248
  assert mm3.save
249
+ sleep 1
208
250
 
209
251
  mmc3.my_model = mm3
210
252
  assert mmc3.my_model_changed?
211
253
  assert mmc3.save(:dirty=>true)
212
-
213
254
  assert mmc3.my_model_id == mm3.id
214
255
  assert mmc3.my_model.id == mm3.id
215
256
 
257
+ sleep 1
216
258
  mmc3 = MyChildModel.find(mmc3.id)
217
259
  puts "mmc3=" + mmc3.inspect
218
260
  assert mmc3.my_model_id == mm3.id, "my_model_id=#{mmc3.my_model_id.inspect} mm3.id=#{mm3.id.inspect}"
@@ -331,6 +373,7 @@ class TestSimpleRecord < TestBase
331
373
  # my_model should be treated differently since it's a belong_to
332
374
  mcm = MyChildModel.new(:name=>"johnny", :my_model=>mm)
333
375
  mcm.save
376
+ sleep 1
334
377
 
335
378
  assert mcm.my_model != nil
336
379
 
@@ -376,6 +419,7 @@ class TestSimpleRecord < TestBase
376
419
 
377
420
  mm.age = nil
378
421
  mm.save
422
+ sleep 1
379
423
 
380
424
  # Should be NIL
381
425
  assert mm.age == nil
@@ -422,12 +466,14 @@ class TestSimpleRecord < TestBase
422
466
  mm.name = "test name"
423
467
  mm.base_string = "in base class"
424
468
  mm.save_with_validation!
469
+ sleep 1
425
470
 
426
471
  mm2 = MyModel.find(mm.id)
427
472
  assert mm2.base_string == mm.base_string
428
473
 
429
474
  mm2.base_string = "changed base string"
430
475
  mm2.save_with_validation!
476
+ sleep 1
431
477
 
432
478
  mm3 = MyModel.find(mm2.id)
433
479
  assert mm3.base_string == mm2.base_string
@@ -512,6 +558,7 @@ class TestSimpleRecord < TestBase
512
558
 
513
559
  mm.save
514
560
  mm2.save
561
+ sleep 1
515
562
 
516
563
  mm = MyModel.find(mm.id)
517
564
  mm2 = MyModel.find(mm2.id)
@@ -521,6 +568,7 @@ class TestSimpleRecord < TestBase
521
568
  def test_constructor_using_belongs_to_ids
522
569
  mm = MyModel.new({:name=>"myname"})
523
570
  mm.save
571
+ sleep 1
524
572
 
525
573
  mm2 = MyChildModel.new({"name"=>"myname2", :my_model_id=>mm.id})
526
574
  puts 'mm2=' + mm2.inspect
@@ -545,6 +593,7 @@ class TestSimpleRecord < TestBase
545
593
  def test_explicit_class_name
546
594
  mm = MyModel.new({:name=>"myname"})
547
595
  mm.save
596
+ sleep 1
548
597
 
549
598
  mm2 = MyChildModel.new({"name"=>"myname2"})
550
599
  mm2.x = mm
@@ -562,6 +611,7 @@ class TestSimpleRecord < TestBase
562
611
  mm.date1 = Time.now
563
612
  mm.date2 = DateTime.now
564
613
  mm.save
614
+ sleep 1
565
615
 
566
616
  raw = @@sdb.get_attributes(MyModel.domain, mm.id)
567
617
  puts "raw=" + raw.inspect
@@ -579,4 +629,5 @@ class TestSimpleRecord < TestBase
579
629
  mme = ModelWithEnc.new(:ssn=>nil, :password=>nil)
580
630
  end
581
631
 
632
+
582
633
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.67
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 1
8
+ - 68
9
+ version: 1.1.68
5
10
  platform: ruby
6
11
  authors:
7
12
  - Travis Reeder
@@ -11,19 +16,21 @@ autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
18
 
14
- date: 2010-01-23 00:00:00 -08:00
19
+ date: 2010-03-07 00:00:00 -08:00
15
20
  default_executable:
16
21
  dependencies:
17
22
  - !ruby/object:Gem::Dependency
18
23
  name: aws
19
- type: :runtime
20
- version_requirement:
21
- version_requirements: !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
22
26
  requirements:
23
27
  - - ">="
24
28
  - !ruby/object:Gem::Version
29
+ segments:
30
+ - 0
25
31
  version: "0"
26
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
27
34
  description: Drop in replacement for ActiveRecord to Amazon SimpleDB instead.
28
35
  email: travis@appoxy.com
29
36
  executables: []
@@ -56,24 +63,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
63
  requirements:
57
64
  - - ">="
58
65
  - !ruby/object:Gem::Version
66
+ segments:
67
+ - 0
59
68
  version: "0"
60
- version:
61
69
  required_rubygems_version: !ruby/object:Gem::Requirement
62
70
  requirements:
63
71
  - - ">="
64
72
  - !ruby/object:Gem::Version
73
+ segments:
74
+ - 0
65
75
  version: "0"
66
- version:
67
76
  requirements: []
68
77
 
69
78
  rubyforge_project:
70
- rubygems_version: 1.3.5
79
+ rubygems_version: 1.3.6
71
80
  signing_key:
72
81
  specification_version: 3
73
82
  summary: Drop in replacement for ActiveRecord to Amazon SimpleDB instead.
74
83
  test_files:
75
84
  - test/conversions.rb
76
- - test/dirty_test.rb
77
85
  - test/model_with_enc.rb
78
86
  - test/my_base_model.rb
79
87
  - test/my_child_model.rb
@@ -81,6 +89,8 @@ test_files:
81
89
  - test/paging_array_test.rb
82
90
  - test/temp_test.rb
83
91
  - test/test_base.rb
92
+ - test/test_dirty.rb
93
+ - test/test_global_options.rb
84
94
  - test/test_helpers.rb
85
95
  - test/test_results_array.rb
86
96
  - test/test_simple_record.rb
data/test/dirty_test.rb DELETED
@@ -1,52 +0,0 @@
1
- require 'test/unit'
2
- require File.expand_path(File.dirname(__FILE__) + "/../lib/simple_record")
3
- require "yaml"
4
- require 'right_aws'
5
- require 'my_model'
6
- require 'my_child_model'
7
- require 'active_support'
8
-
9
-
10
- class Person < SimpleRecord::Base
11
- has_strings :name
12
- has_ints :age
13
- end
14
- class DirtyTest < Test::Unit::TestCase
15
-
16
- def setup
17
- @config = YAML::load(File.open(File.join(File.dirname(__FILE__), "test-config.yml")))
18
- @@sdb = RightAws::SdbInterface.new(@config['amazon']['access_key'], @config['amazon']['secret_key'], {:connection_mode => :per_request, :protocol => "http", :port => 80})
19
-
20
- SimpleRecord.establish_connection(@config['amazon']['access_key'], @config['amazon']['secret_key'], :connection_mode=>:single)
21
- SimpleRecord::Base.set_domain_prefix("simplerecord_tests_")
22
-
23
- Person.create_domain
24
- @person = Person.new(:name => 'old', :age => '70')
25
- @person.save
26
-
27
- assert !@person.changed?
28
- assert !@person.name_changed?
29
- end
30
-
31
- def teardown
32
- Person.delete_domain
33
- SimpleRecord.close_connection
34
- end
35
-
36
- def test_same_value_are_not_dirty
37
- @person.name = "old"
38
-
39
- assert !@person.changed?
40
- assert !@person.name_changed?
41
- end
42
-
43
- def test_reverted_changes_are_not_dirty
44
- @person.name = "new"
45
- assert @person.changed?
46
- assert @person.name_changed?
47
-
48
- @person.name = "old"
49
- assert !@person.changed?
50
- assert !@person.name_changed?
51
- end
52
- end