Moved from Marshal to JSON session files.
This commit is contained in:
parent
4a9a2d8d10
commit
71d8af7a52
2 changed files with 24 additions and 5 deletions
|
@ -59,7 +59,7 @@ class LongPollingController < ApplicationController
|
|||
user_id = session[:user_id]
|
||||
user = {}
|
||||
if user_id
|
||||
user = User.find( user_id )
|
||||
user = User.find( user_id ).attributes
|
||||
end
|
||||
log 'notice', "send auth login (user_id #{user_id})", client_id
|
||||
Sessions.create( client_id, user, { :type => 'ajax' } )
|
||||
|
|
|
@ -37,7 +37,7 @@ returns
|
|||
:user => session,
|
||||
:meta => meta,
|
||||
}
|
||||
file.write Marshal.dump(data)
|
||||
file.write data.to_json
|
||||
}
|
||||
|
||||
# send update to browser
|
||||
|
@ -195,7 +195,7 @@ returns
|
|||
path = @path + '/' + client_id.to_s
|
||||
data[:meta][:last_ping] = Time.new.to_i.to_s
|
||||
File.open( path + '/session', 'wb' ) { |file|
|
||||
file.write Marshal.dump(data)
|
||||
file.write data.to_json
|
||||
}
|
||||
true
|
||||
end
|
||||
|
@ -234,7 +234,11 @@ returns
|
|||
file.flock( File::LOCK_EX )
|
||||
all = file.read
|
||||
file.flock( File::LOCK_UN )
|
||||
data = Marshal.load( all )
|
||||
dataJSON = JSON.parse( all )
|
||||
if dataJSON
|
||||
data = self.symbolize_keys(dataJSON)
|
||||
data[:user] = dataJSON['user'] # for compat. reasons
|
||||
end
|
||||
}
|
||||
rescue Exception => e
|
||||
puts e.inspect
|
||||
|
@ -567,4 +571,19 @@ returns
|
|||
puts "/LOOP #{client_id} - #{try_count}"
|
||||
end
|
||||
|
||||
def self.symbolize_keys(hash)
|
||||
hash.inject({}){|result, (key, value)|
|
||||
new_key = case key
|
||||
when String then key.to_sym
|
||||
else key
|
||||
end
|
||||
new_value = case value
|
||||
when Hash then symbolize_keys(value)
|
||||
else value
|
||||
end
|
||||
result[new_key] = new_value
|
||||
result
|
||||
}
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in a new issue