mirror of
https://github.com/github/rails.git
synced 2026-01-27 23:38:11 -05:00
r3173@asus: jeremy | 2005-11-18 23:34:41 -0800
Ticket 2731 - sessions r3185@asus: jeremy | 2005-11-19 18:02:51 -0800 eliminate const redefinition warning r3186@asus: jeremy | 2005-11-19 19:25:50 -0800 Use :database option instead of :dbfile r3187@asus: jeremy | 2005-11-19 19:34:31 -0800 Data writer assigns to instance var. Since nothing is calling write_attribute on the data column except for marshal_data, simplify data reader to lazy-unmarshal the data column (no worrying whether it's already unmarshaled) r3188@asus: jeremy | 2005-11-19 19:35:40 -0800 Explicitly create the session class so that subsequent requests for the session can find it in the database. This is masking a problem with the controller losing its @session instance var and therefore requesting a new session. r3189@asus: jeremy | 2005-11-19 19:36:40 -0800 Using create unnecessarily broadens the existing duck-typing so use new + save instead. r3194@asus: jeremy | 2005-11-19 20:28:17 -0800 Test creation of another instance while first instance is still active. Should return same session_id. r3195@asus: jeremy | 2005-11-19 20:39:45 -0800 Always create new AR sessions rather than trying too hard to avoid database traffic. References #2731. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3100 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Always create new AR sessions rather than trying too hard to avoid database traffic. #2731 [Jeremy Kemper]
|
||||
|
||||
* Update to Prototype 1.4.0_rc4. Closes #2943 (old Array.prototype.reverse behavior can be obtained by passing false as an argument). [Sam Stephenson]
|
||||
|
||||
* Use Element.update('id', 'html') instead of $('id').innerHTML = 'html' in JavaScriptGenerator#replace_html so that script tags are evaluated. [Sam Stephenson]
|
||||
|
||||
@@ -117,17 +117,11 @@ class CGI
|
||||
end
|
||||
end
|
||||
|
||||
attr_writer :data
|
||||
|
||||
# Lazy-unmarshal session state.
|
||||
def data
|
||||
unless @data
|
||||
case d = read_attribute(@@data_column_name)
|
||||
when String
|
||||
@data = self.class.unmarshal(d)
|
||||
else
|
||||
@data = d || {}
|
||||
end
|
||||
end
|
||||
@data
|
||||
@data ||= self.class.unmarshal(read_attribute(@@data_column_name))
|
||||
end
|
||||
|
||||
private
|
||||
@@ -284,6 +278,7 @@ class CGI
|
||||
raise CGI::Session::NoSession, 'uninitialized session'
|
||||
end
|
||||
@session = @@session_class.new(:session_id => session_id, :data => {})
|
||||
@session.save
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ module ActionView
|
||||
compute_public_path(source, 'javascripts', 'js')
|
||||
end
|
||||
|
||||
JAVASCRIPT_DEFAULT_SOURCES = ['prototype', 'effects', 'dragdrop', 'controls']
|
||||
JAVASCRIPT_DEFAULT_SOURCES = ['prototype', 'effects', 'dragdrop', 'controls'] unless const_defined?(:JAVASCRIPT_DEFAULT_SOURCES)
|
||||
@@javascript_default_sources = JAVASCRIPT_DEFAULT_SOURCES.dup
|
||||
|
||||
# Returns a script include tag per source given as argument. Examples:
|
||||
|
||||
@@ -15,12 +15,12 @@ require 'action_controller/session/active_record_store'
|
||||
|
||||
#ActiveRecord::Base.logger = Logger.new($stdout)
|
||||
begin
|
||||
CGI::Session::ActiveRecordStore::Session.establish_connection(:adapter => 'sqlite3', :dbfile => ':memory:')
|
||||
CGI::Session::ActiveRecordStore::Session.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
|
||||
CGI::Session::ActiveRecordStore::Session.connection
|
||||
rescue Object
|
||||
$stderr.puts 'SQLite 3 unavailable; falling back to SQLite 2.'
|
||||
begin
|
||||
CGI::Session::ActiveRecordStore::Session.establish_connection(:adapter => 'sqlite', :dbfile => ':memory:')
|
||||
CGI::Session::ActiveRecordStore::Session.establish_connection(:adapter => 'sqlite', :database => ':memory:')
|
||||
CGI::Session::ActiveRecordStore::Session.connection
|
||||
rescue Object
|
||||
$stderr.puts 'SQLite 2 unavailable; skipping ActiveRecordStore test suite.'
|
||||
@@ -68,10 +68,16 @@ class ActiveRecordStoreTest < Test::Unit::TestCase
|
||||
ENV['REQUEST_METHOD'] = 'GET'
|
||||
CGI::Session::ActiveRecordStore.session_class = session_class
|
||||
|
||||
@new_session = CGI::Session.new(CGI.new, 'database_manager' => CGI::Session::ActiveRecordStore, 'new_session' => true)
|
||||
@cgi = CGI.new
|
||||
@new_session = CGI::Session.new(@cgi, 'database_manager' => CGI::Session::ActiveRecordStore, 'new_session' => true)
|
||||
@new_session['foo'] = 'bar'
|
||||
end
|
||||
|
||||
def test_another_instance
|
||||
@another = CGI::Session.new(@cgi, 'session_id' => @new_session.session_id, 'database_manager' => CGI::Session::ActiveRecordStore)
|
||||
assert_equal @new_session.session_id, @another.session_id
|
||||
end
|
||||
|
||||
def test_model_attribute
|
||||
assert_kind_of CGI::Session::ActiveRecordStore::Session, @new_session.model
|
||||
assert_equal({ 'foo' => 'bar' }, @new_session.model.data)
|
||||
|
||||
Reference in New Issue
Block a user