aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-07-22 23:40:39 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-07-22 23:40:39 -0700
commitda37716c35ec5007c028c533d64cea0dc80f574b (patch)
treee8bbddd754f6d926eb8342806b857ba70662a7e1 /activerecord
parentb378b19430a4d2ee54cbe7f1935fbd4f8b3b331b (diff)
downloadrails-da37716c35ec5007c028c533d64cea0dc80f574b.tar.gz
rails-da37716c35ec5007c028c533d64cea0dc80f574b.tar.bz2
rails-da37716c35ec5007c028c533d64cea0dc80f574b.zip
refactoring class methods to a module
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/session_store.rb42
-rw-r--r--activerecord/test/cases/session_store/session_test.rb7
2 files changed, 23 insertions, 26 deletions
diff --git a/activerecord/lib/active_record/session_store.rb b/activerecord/lib/active_record/session_store.rb
index 923fab27b0..143c1fec13 100644
--- a/activerecord/lib/active_record/session_store.rb
+++ b/activerecord/lib/active_record/session_store.rb
@@ -49,8 +49,24 @@ module ActiveRecord
# The example SqlBypass class is a generic SQL session store. You may
# use it as a basis for high-performance database-specific stores.
class SessionStore < ActionDispatch::Session::AbstractStore
+ module ClassMethods # :nodoc:
+ def marshal(data)
+ ActiveSupport::Base64.encode64(Marshal.dump(data)) if data
+ end
+
+ def unmarshal(data)
+ Marshal.load(ActiveSupport::Base64.decode64(data)) if data
+ end
+
+ def drop_table!
+ connection.execute "DROP TABLE #{table_name}"
+ end
+ end
+
# The default Active Record class.
class Session < ActiveRecord::Base
+ extend ClassMethods
+
##
# :singleton-method:
# Customizable data column name. Defaults to 'data'.
@@ -71,14 +87,6 @@ module ActiveRecord
find_by_session_id(session_id)
end
- def marshal(data)
- ActiveSupport::Base64.encode64(Marshal.dump(data)) if data
- end
-
- def unmarshal(data)
- Marshal.load(ActiveSupport::Base64.decode64(data)) if data
- end
-
def create_table!
connection.execute <<-end_sql
CREATE TABLE #{table_name} (
@@ -89,10 +97,6 @@ module ActiveRecord
end_sql
end
- def drop_table!
- connection.execute "DROP TABLE #{table_name}"
- end
-
private
def session_id_column
'session_id'
@@ -173,6 +177,8 @@ module ActiveRecord
# binary session data in a +text+ column. For higher performance,
# store in a +blob+ column instead and forgo the Base64 encoding.
class SqlBypass
+ extend ClassMethods
+
##
# :singleton-method:
# Use the ActiveRecord::Base.connection by default.
@@ -208,14 +214,6 @@ module ActiveRecord
end
end
- def marshal(data)
- ActiveSupport::Base64.encode64(Marshal.dump(data)) if data
- end
-
- def unmarshal(data)
- Marshal.load(ActiveSupport::Base64.decode64(data)) if data
- end
-
def create_table!
connection.execute <<-end_sql
CREATE TABLE #{table_name} (
@@ -225,10 +223,6 @@ module ActiveRecord
)
end_sql
end
-
- def drop_table!
- connection.execute "DROP TABLE #{table_name}"
- end
end
attr_reader :session_id, :new_record
diff --git a/activerecord/test/cases/session_store/session_test.rb b/activerecord/test/cases/session_store/session_test.rb
index 4f67073675..6ba31028de 100644
--- a/activerecord/test/cases/session_store/session_test.rb
+++ b/activerecord/test/cases/session_store/session_test.rb
@@ -49,8 +49,11 @@ module ActiveRecord
def test_find_by_session_id
Session.create_table!
- s = Session.create!(:data => 'world', :session_id => "10")
- assert_equal s, Session.find_by_session_id("10")
+ session_id = "10"
+ s = Session.create!(:data => 'world', :session_id => session_id)
+ t = Session.find_by_session_id(session_id)
+ assert_equal s, t
+ assert_equal s.data, t.data
Session.drop_table!
end