Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 1710

Show
Ignore:
Timestamp:
07/05/05 14:50:07 (3 years ago)
Author:
bitsweat
Message:

r2850@asus: jeremy | 2005-07-05 13:08:32 -0700
Don't be strict about the order in which AR store methods are called. Allow e.g. session close followed by session close.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/actionpack/lib/action_controller/session/active_record_store.rb

    r1693 r1710  
    252252      # Restore session state.  The session model handles unmarshaling. 
    253253      def restore 
    254         @session.data 
     254        @session.data if @session 
    255255      end 
    256256 
    257257      # Save session store. 
    258258      def update 
    259         @session.save! 
     259        @session.save! if @session 
    260260      end 
    261261 
    262262      # Save and close the session store. 
    263263      def close 
    264         update 
    265         @session = nil 
     264        if @session 
     265          update 
     266          @session = nil 
     267        end 
    266268      end 
    267269 
    268270      # Delete and close the session store. 
    269271      def delete 
    270         @session.destroy rescue nil 
    271         @session = nil 
     272        if @session 
     273          @session.destroy rescue nil 
     274          @session = nil 
     275        end 
    272276      end 
    273277    end 
  • trunk/actionpack/test/controller/active_record_store_test.rb

    r1692 r1710  
    4040    reloaded = CGI::Session.new(CGI.new, 'session_id' => @new_session.session_id, 'database_manager' => CGI::Session::ActiveRecordStore) 
    4141    assert_equal 'bar', reloaded['foo'] 
     42  end 
     43 
     44  def test_tolerates_close_close 
     45    assert_nothing_raised do 
     46      @new_session.close 
     47      @new_session.close 
     48    end 
    4249  end 
    4350end