Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
# Don't write unchanged sessions to store. # Brian Ellin - brian -at- janrain.com class CGI::Session::ActiveRecordStore::Session # Special version of @data which keeps a copy of the orig # session data for comparison before save. def data @data ||= self.class.unmarshal(read_attribute(@@data_column_name)) || \ {} # keep a *deep* copy of the session data @data_copy ||= self.class.unmarshal(read_attribute(@@data_column_name)\ ) || {} @data end # Has the session data changed? def needs_saving? return false unless loaded? return @data != @data_copy end end class CGI::Session::ActiveRecordStore # Version of close that hooks in with sesion container's # needs_saving? method. def close if @session if @session.needs_saving? update end @session = nil end end end
This paste will be private.
From the Design Piracy series on my blog: