diff options
author | James Edwards-Jones <jedwardsjones@gitlab.com> | 2019-04-24 13:50:00 +0300 |
---|---|---|
committer | James Edwards-Jones <jedwardsjones@gitlab.com> | 2019-05-02 08:28:26 +0300 |
commit | 5faa98f481e0f5e0ccb1758c34a104f523ab21d2 (patch) | |
tree | 3119efc05e2ecc91cc0d91217c0869b69f656ea6 /lib/gitlab/session.rb | |
parent | 0f863c68bb8bc5054a22e0c553a933c83bea4df6 (diff) |
Session stored globally per request
- This can be accessed with Session.current and is restored after.
- Data can be stored under a key with NamespacedSessionStore
Diffstat (limited to 'lib/gitlab/session.rb')
-rw-r--r-- | lib/gitlab/session.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/gitlab/session.rb b/lib/gitlab/session.rb new file mode 100644 index 00000000000..7487ba04a6d --- /dev/null +++ b/lib/gitlab/session.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Gitlab + class Session + STORE_KEY = :session_storage + + class << self + def with_session(session) + old = self.current + self.current = session + yield + ensure + self.current = old + end + + def current + Thread.current[STORE_KEY] + end + + protected + + def current=(value) + Thread.current[STORE_KEY] = value + end + end + end +end |