Class: Shhh::App::Password::Cache
- Inherits:
-
Object
- Object
- Shhh::App::Password::Cache
- Includes:
- Singleton
- Defined in:
- lib/shhh/app/password/cache.rb
Constant Summary collapse
- URI =
'druby://127.0.0.1:24924'
- DEFAULT_TIMEOUT =
300
- TRIES =
2
Instance Attribute Summary collapse
-
#enabled ⇒ Object
Returns the value of attribute enabled.
-
#provider ⇒ Object
Returns the value of attribute provider.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #configure(provider: Coin, enabled: true, timeout: DEFAULT_TIMEOUT) ⇒ Object
- #md5(string) ⇒ Object
- #operation ⇒ Object
Instance Attribute Details
#enabled ⇒ Object
Returns the value of attribute enabled.
15 16 17 |
# File 'lib/shhh/app/password/cache.rb', line 15 def enabled @enabled end |
#provider ⇒ Object
Returns the value of attribute provider.
15 16 17 |
# File 'lib/shhh/app/password/cache.rb', line 15 def provider @provider end |
#timeout ⇒ Object
Returns the value of attribute timeout.
15 16 17 |
# File 'lib/shhh/app/password/cache.rb', line 15 def timeout @timeout end |
Instance Method Details
#[](key) ⇒ Object
43 44 45 46 47 48 |
# File 'lib/shhh/app/password/cache.rb', line 43 def [] (key) cache = self operation do cache.provider.read(cache.md5(key)) end end |
#[]=(key, value) ⇒ Object
50 51 52 53 54 55 |
# File 'lib/shhh/app/password/cache.rb', line 50 def []=(key, value) cache = self operation do cache.provider.write(cache.md5(key), value, cache.timeout) end end |
#configure(provider: Coin, enabled: true, timeout: DEFAULT_TIMEOUT) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/shhh/app/password/cache.rb', line 17 def configure(provider: Coin, enabled: true, timeout: DEFAULT_TIMEOUT) Coin.uri = URI if provider == Coin self.provider = provider self.enabled = enabled self.timeout = timeout self end |
#md5(string) ⇒ Object
57 58 59 |
# File 'lib/shhh/app/password/cache.rb', line 57 def md5(string) Digest::MD5.base64digest(string) end |
#operation ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/shhh/app/password/cache.rb', line 29 def operation retries ||= TRIES yield if self.enabled rescue StandardError => e if retries == TRIES && Coin.remote_uri.nil? Coin.remote_uri = URI if provider == Coin retries -= 1 retry end puts 'WARNING: error reading from DRB server: ' + e..red nil end |