cerealize 0.8.4 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,5 +1,14 @@
1
1
  = cerealize changes history
2
2
 
3
+ == cerealize 0.8.5 -- 2010-09-29
4
+
5
+ * Fix a bug that nil can't be set in cerealized column.
6
+ This shows the bug:
7
+
8
+ apple = Apple.find(Apple.create(:data => [5]).id)
9
+ apple.update_attributes(:data => nil)
10
+ assert_equal nil, apple.data # => shouldn't be [5]
11
+
3
12
  == cerealize 0.8.4 -- 2010-09-29
4
13
 
5
14
  * Fixed activerecord dependency, should be <3
data/cerealize.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{cerealize}
5
- s.version = "0.8.3"
5
+ s.version = "0.8.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Cardinal Blue", "Lin Jen-Shin (aka godfat 真常)", "Jaime Cham"]
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Cerealize
3
- VERSION = '0.8.4'
3
+ VERSION = '0.8.5'
4
4
  end
data/lib/cerealize.rb CHANGED
@@ -151,7 +151,7 @@ module Cerealize
151
151
  mod.module_eval <<-RUBY, __FILE__, __LINE__ + 1
152
152
  def #{property}_update_if_dirty
153
153
  # See if we have a new cur value
154
- if #{field_cache}
154
+ if instance_variable_defined?('@#{property}')
155
155
  value = #{field_cache}
156
156
  value_enc = cerealize_encode(:#{property}, value)
157
157
 
@@ -164,10 +164,11 @@ module Cerealize
164
164
  value != cerealize_decode(:#{property}, #{field_orig}))
165
165
  self[:#{property}] = value_enc
166
166
  end
167
+
168
+ remove_instance_variable('@#{property}')
167
169
  end
168
170
 
169
- self.#{field_orig} = nil
170
- self.#{field_cache} = nil
171
+ self.#{field_orig} = nil
171
172
  end
172
173
  RUBY
173
174
 
data/test/test_basic.rb CHANGED
@@ -34,6 +34,25 @@ class BasicTest < Test::Unit::TestCase
34
34
  assert_equal 'mood: cheerful', Dog.new(:mood => 'cheerful').mood
35
35
  end
36
36
 
37
+ def test_setting_nil_in_hash
38
+ apple = Apple.create(:data => {:name => 'pine'})
39
+ assert_equal({:name => 'pine'}, apple.data)
40
+ assert_equal 'pine', apple.name
41
+ apple.data[:name] = nil
42
+ assert_equal nil, apple.name
43
+ apple.save; apple.reload
44
+ assert_equal nil, apple.name
45
+ assert_equal({:name => nil}, apple.data)
46
+ end
47
+
48
+ def test_save_nil
49
+ apple = Apple.find(Apple.create(:data => [5]).id)
50
+ assert_equal [5], apple.data
51
+ apple.update_attributes(:data => nil)
52
+ assert_equal nil, apple.data
53
+ assert_equal nil, Apple.find(apple.id).data
54
+ end
55
+
37
56
  def test_encoding_yaml
38
57
  set_encoding(:yaml)
39
58
  Boat.create :name => 'yamato', :captain => Person.new('kosaku')
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 8
8
- - 4
9
- version: 0.8.4
8
+ - 5
9
+ version: 0.8.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Cardinal Blue