Class: Innate::Cache::DRb
- Inherits:
-
Object
- Object
- Innate::Cache::DRb
- Includes:
- API
- Defined in:
- lib/innate/cache/drb.rb
Overview
Cache utilizing a DRb server.
You will need to run a corresponding DRb server to use this cache. The example below is using a normal Hash, but it is recommended to use a thread-safe alternative like SyncHash.
Example for DRb server:
require 'drb'
URI = "druby://127.0.0.1:9069"
CACHE = {}
$SAFE = 1 # disable eval and friends
DRb.start_service(URI, CACHE)
DRb.thread.join
Usage for all caches:
Innate..cache.default = Innate::Cache::DRb
Usage for sessions only:
Innate..cache.session = Innate::Cache::DRb
Constant Summary collapse
- OPTIONS =
{:address => '127.0.0.1', :port => 9069}
Instance Method Summary collapse
- #cache_clear ⇒ Object
- #cache_delete(*args) ⇒ Object
- #cache_fetch(*args) ⇒ Object
- #cache_setup(*args) ⇒ Object
- #cache_store(*args) ⇒ Object
Instance Method Details
#cache_clear ⇒ Object
41 42 43 |
# File 'lib/innate/cache/drb.rb', line 41 def cache_clear @store.clear end |
#cache_delete(*args) ⇒ Object
53 54 55 |
# File 'lib/innate/cache/drb.rb', line 53 def cache_delete(*args) super{|key| @store.delete(key) } end |
#cache_fetch(*args) ⇒ Object
49 50 51 |
# File 'lib/innate/cache/drb.rb', line 49 def cache_fetch(*args) super{|key| @store[key] } end |
#cache_setup(*args) ⇒ Object
36 37 38 39 |
# File 'lib/innate/cache/drb.rb', line 36 def cache_setup(*args) address, port = OPTIONS.values_at(:address, :port) @store = DRbObject.new(nil, "druby://#{address}:#{port}") end |
#cache_store(*args) ⇒ Object
45 46 47 |
# File 'lib/innate/cache/drb.rb', line 45 def cache_store(*args) super{|key, value| @store[key] = value } end |