File tree 3 files changed +17
-2
lines changed
3 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -95,6 +95,13 @@ You must implement these methods:
95
95
* ` save `
96
96
* ` destroy `
97
97
98
+ Note that some of the provided [ rake tasks] ( https://github.com/rails/activerecord-session_store/blob/master/lib/tasks/database.rake )
99
+ require additional methods to be implemented:
100
+
101
+ * ` db:sessions:clear ` depends on ` table_name `
102
+ * ` db:sessions:trim ` depends on ` where ` and ` delete_all `
103
+ * ` db:sessions:upgrade ` depends on ` secure! `
104
+
98
105
The example SqlBypass class is a generic SQL session store. You may
99
106
use it as a basis for high-performance database-specific stores.
100
107
Original file line number Diff line number Diff line change @@ -8,13 +8,13 @@ namespace 'db:sessions' do
8
8
9
9
desc "Clear the sessions table"
10
10
task :clear => [ :environment , 'db:load_config' ] do
11
- ActiveRecord ::Base . connection . execute "TRUNCATE TABLE #{ ActiveRecord :: SessionStore :: Session . table_name } "
11
+ ActiveRecord ::Base . connection . truncate ( ActionDispatch :: Session :: ActiveRecordStore . session_class . table_name )
12
12
end
13
13
14
14
desc "Trim old sessions from the table (default: > 30 days)"
15
15
task :trim => [ :environment , 'db:load_config' ] do
16
16
cutoff_period = ( ENV [ 'SESSION_DAYS_TRIM_THRESHOLD' ] || 30 ) . to_i . days . ago
17
- ActiveRecord :: SessionStore :: Session .
17
+ ActionDispatch :: Session :: ActiveRecordStore . session_class .
18
18
where ( "updated_at < ?" , cutoff_period ) .
19
19
delete_all
20
20
end
Original file line number Diff line number Diff line change @@ -63,6 +63,14 @@ def test_upgrade_task
63
63
assert Session . find_by_session_id ( Rack ::Session ::SessionId . new ( "original_session_id" ) . private_id )
64
64
assert Session . find_by_session_id ( "2::secure_session_id" )
65
65
end
66
+
67
+ def test_clear_task
68
+ Session . create! ( data : "obsolete" )
69
+
70
+ Rake . application . invoke_task 'db:sessions:clear'
71
+
72
+ assert_equal 0 , Session . count
73
+ end
66
74
end
67
75
end
68
76
end
You can’t perform that action at this time.
0 commit comments