session:頁面間的信息保存手段。
使用:
賦值
session[:person] = @user
讀取
Hello #{session[:person]}
清除
session[:person] = nil
全部清除
reset_session
Ruby on Rails提供的session存儲方案:
PStore (文件存儲,默認方式)
ActiveRecordStore(數據庫)
DRbStore
FileStore
MemoryStore
各存儲方案在性能上的比較:
Ruby on Rails Session Container Performance
如何使用ActiveRecordStore(數據庫)做為session存儲方案
使用數據庫作為session儲存方案可以讓網站更方便地擴展成多服務器網站。使用方法:
1. 運行 rake db:sessions:create
2. 將config/environment.rb, uncomment 中下行的注釋#去除:
config.action_controller.session_store = :active_record_store
3. 運行rake db:migrate
4. 重啟服務器。
linux上用來清除長時不用的session的cron命令:
$RAILS_APP_DIR/script/runner ‘ActiveRecord::Base.connection.delete("DELETE FROM sessions WHERE updated_at < now() – INTERVAL 1 HOUR")