Class: YummyGuide::Administrate::BrowserPreferenceStore
- Inherits:
-
Object
- Object
- YummyGuide::Administrate::BrowserPreferenceStore
- Defined in:
- lib/yummy_guide/administrate/browser_preference_store.rb
Defined Under Namespace
Classes: InvalidPreference, RedisUnavailable
Constant Summary collapse
- TTL_SECONDS =
30 * 24 * 60 * 60
- KEY_PREFIX =
"yummy_guide_administrate:admin_browser_preferences:v1"- MIN_NAVIGATION_WIDTH =
25- MAX_NAVIGATION_WIDTH =
250- MIN_COLUMN_WIDTH =
48- MAX_COLUMN_WIDTH =
5000- MAX_SCOPE_LENGTH =
200- MAX_COLUMN_ID_LENGTH =
200
Instance Attribute Summary collapse
-
#key_prefix ⇒ Object
readonly
Returns the value of attribute key_prefix.
-
#redis ⇒ Object
readonly
Returns the value of attribute redis.
Instance Method Summary collapse
- #fetch(browser_id) ⇒ Object
-
#initialize(redis: nil, key_prefix: KEY_PREFIX) ⇒ BrowserPreferenceStore
constructor
A new instance of BrowserPreferenceStore.
- #update(browser_id, attributes) ⇒ Object
Constructor Details
#initialize(redis: nil, key_prefix: KEY_PREFIX) ⇒ BrowserPreferenceStore
Returns a new instance of BrowserPreferenceStore.
22 23 24 25 |
# File 'lib/yummy_guide/administrate/browser_preference_store.rb', line 22 def initialize(redis: nil, key_prefix: KEY_PREFIX) @redis = redis @key_prefix = key_prefix end |
Instance Attribute Details
#key_prefix ⇒ Object (readonly)
Returns the value of attribute key_prefix.
20 21 22 |
# File 'lib/yummy_guide/administrate/browser_preference_store.rb', line 20 def key_prefix @key_prefix end |
#redis ⇒ Object (readonly)
Returns the value of attribute redis.
20 21 22 |
# File 'lib/yummy_guide/administrate/browser_preference_store.rb', line 20 def redis @redis end |
Instance Method Details
#fetch(browser_id) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/yummy_guide/administrate/browser_preference_store.rb', line 27 def fetch(browser_id) return empty_state if browser_id.blank? with_redis do |client| raw_value = client.get(key_for(browser_id)) client.expire(key_for(browser_id), TTL_SECONDS) if raw_value.present? normalize_state(parse_state(raw_value)) end rescue RedisUnavailable raise rescue StandardError => e raise RedisUnavailable, e. end |
#update(browser_id, attributes) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/yummy_guide/administrate/browser_preference_store.rb', line 41 def update(browser_id, attributes) raise InvalidPreference, "browser_id is required" if browser_id.blank? with_redis do |client| state = normalize_state(parse_state(client.get(key_for(browser_id)))) apply_update(state, attributes.to_h) client.set(key_for(browser_id), JSON.generate(state), ex: TTL_SECONDS) state end rescue InvalidPreference, RedisUnavailable raise rescue StandardError => e raise RedisUnavailable, e. end |