session数据保存在Rails程序根目录下的tmp/sessions目录
Rails的sessions默认以Marshal Ruby对象保存
有时候程序由于session数据不对而出错,我们可以写一段脚本来检查session数据:
DumpingSessionContentsDuringDevelopment/script/dump_sessions
[code]
#!/usr/bin/env ruby
require 'pp'
require File.dirname(__FILE__) + '/../config/environment'
Dir['app/models/**/*rb'].each{|f| require f}
pp Dir[File.dirname(__FILE__) + '/../tmp/sessions/ruby_sess*']collect {|file|
[file, Marshal.load(File.read(file))]
}
[/code]
我们可以运行[b]ruby script/dump_sessions[/b]来查看session数据
我们还可以写一个rake task来从ActiveRecord session store显示sessions数据:
[code]
namespace :db do
namespace :sessions do
desc "Dumps the database-backed session data"
task :dump => [:environment] do |t|
require 'pp'
Dir['app/models/**/*rb'].each{|f| require f}
sessions = CGI::Session::ActiveRecordStore::Session.find_all
sessions.each do |session|
pp session.data
end
end
end
[/code]
Rails的sessions默认以Marshal Ruby对象保存
有时候程序由于session数据不对而出错,我们可以写一段脚本来检查session数据:
DumpingSessionContentsDuringDevelopment/script/dump_sessions
[code]
#!/usr/bin/env ruby
require 'pp'
require File.dirname(__FILE__) + '/../config/environment'
Dir['app/models/**/*rb'].each{|f| require f}
pp Dir[File.dirname(__FILE__) + '/../tmp/sessions/ruby_sess*']collect {|file|
[file, Marshal.load(File.read(file))]
}
[/code]
我们可以运行[b]ruby script/dump_sessions[/b]来查看session数据
我们还可以写一个rake task来从ActiveRecord session store显示sessions数据:
[code]
namespace :db do
namespace :sessions do
desc "Dumps the database-backed session data"
task :dump => [:environment] do |t|
require 'pp'
Dir['app/models/**/*rb'].each{|f| require f}
sessions = CGI::Session::ActiveRecordStore::Session.find_all
sessions.each do |session|
pp session.data
end
end
end
[/code]