Skip to content

Commit

Permalink
more fixes to deal with nested arrays/hashes or when == is shallow
Browse files Browse the repository at this point in the history
  • Loading branch information
fcheung committed May 3, 2007
1 parent 3f84ced commit 9f947b3
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions lib/smart_session_store.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def update

private

def data= data, marshalized = nil
def data= data
@data = data
if @session && @session.data
@original_marshalized_data = @session.data
Expand All @@ -87,25 +87,24 @@ def marshalize(data)
end

def merge_data
if @original_marshalized_data
@original_data ||= unmarshalize @original_marshalized_data
else
@original_data = {}
end
@data ||= {}
deleted_keys = @original_data.keys - @data.keys
fresh_session = @@session_class.find_session(@session.session_id, true)
if fresh_session && fresh_data = unmarshalize(fresh_session.data)
deleted_keys.each {|k| fresh_data.delete k}
@data.each {|k,v| fresh_data[k] = v unless @original_data[k] == @data[k]}
@data.each {|k,v| fresh_data[k] = v unless Marshal.dump( @original_data[k]) == Marshal.dump( v)}
@data = fresh_data
@session = fresh_session
end
end

def save_session
if @original_marshalized_data
@original_data ||= unmarshalize @original_marshalized_data
else
@original_data = {}
end

return if @data == @original_data
return if marshalize(@data) == @original_marshalized_data
SqlSession.transaction do
merge_data
@session.update_session(marshalize(@data))
Expand Down

0 comments on commit 9f947b3

Please sign in to comment.