Class: FeedTools::Cache::Memcached
- Inherits:
-
Object
- Object
- FeedTools::Cache::Memcached
- Defined in:
- lib/feedtools/cache/memcached.rb,
lib/feedtools/cache/memcached.rb,
lib/feedtools/cache/memcached.rb,
lib/feedtools/cache/memcached/version.rb
Overview
Caching plugin for FeedTools. Cache feched feed into memcached.
usage
Simple to use, you require the library and a set configuration.
require 'feedtools-cache-memcached'
or manually installed
require 'feedtools/cache/memcached'
FeedTools.configurations[:feed_cache] = FeedTools::Cache::Memcached
=== configuration
You can configurate memcached servers to use.
1. FeedTools::Cache::Memcached.configuration
2. default: localhost:11211 and { :namespace => nil, :readonly => false, :multithread => false, }
Defined Under Namespace
Modules: VERSION Classes: NullLogger
Constant Summary collapse
- ATTRIBUTES =
Required by FeedTools.
%w( id href title link feed_data feed_data_type http_headers last_retrieved )
- @@configuration =
default configuration from memcache-client
['localhost:11211', { :namespace => nil, :readonly => false, :multithread => false, }]
- @@logger =
NullLogger.new
Class Method Summary collapse
-
.configuration ⇒ Object
Get memcached configuration.
-
.configuration=(configuration) ⇒ Object
Set memcached configuration.
-
.connected? ⇒ Boolean
Required by FeedTools.
-
.find_by_href(url) ⇒ Object
Required by FeedTools.
-
.find_by_id(id) ⇒ Object
Required by FeedTools.
-
.initialize_cache ⇒ Object
Required by FeedTools.
-
.logger ⇒ Object
Debug logger.
-
.logger=(logger) ⇒ Object
Set logger object if use need.
-
.set_up_correctly? ⇒ Boolean
Required by FeedTools.
Instance Method Summary collapse
-
#id ⇒ Object
Required by FeedTools.
-
#id=(id) ⇒ Object
Required by FeedTools.
-
#initialize ⇒ Memcached
constructor
Create a FeedTools::Cache::Memcached instance object.
-
#load_cache(key) ⇒ Object
Load data from memcached.
-
#method_missing(message, *args) ⇒ Object
:nodoc:.
-
#new_record? ⇒ Boolean
Required by FeedTools.
-
#save ⇒ Object
Required by FeedTools.
Constructor Details
#initialize ⇒ Memcached
Create a FeedTools::Cache::Memcached instance object.
Returns
- cached feed
-
FeedTools::Cache::Memcached
: cached feed.
Create a FeedTools::Cache::Memcached instance object.
Returns
- cached feed
-
FeedTools::Cache::Memcached
: cached feed.
137 138 139 140 141 |
# File 'lib/feedtools/cache/memcached.rb', line 137 def initialize @data = {} @new_record = true @@memcached ||= MemCache.new(*@@configuration) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(message, *args) ⇒ Object
:nodoc:
199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/feedtools/cache/memcached.rb', line 199 def method_missing(, *args) #:nodoc: begin if matched = /^(.*)=$/.match(.to_s) set_attribute(matched[1], args.first) else get_attribute(.to_s) end rescue NameError raise NoMethodError, "undefined method `#{}' for #{self.to_s}" end end |
Class Method Details
.configuration ⇒ Object
Get memcached configuration
Returns
- configuration
-
Array
: configured memcached settings.
100 101 102 |
# File 'lib/feedtools/cache/memcached.rb', line 100 def self.configuration @@configuration end |
.configuration=(configuration) ⇒ Object
Set memcached configuration
Parameters
- configuration
-
String
: set memcached configuration and reset the current connections.
108 109 110 111 |
# File 'lib/feedtools/cache/memcached.rb', line 108 def self.configuration=(configuration) @@configuration = configuration @@memcached.reset end |
.connected? ⇒ Boolean
Required by FeedTools. Return whether this connects memcached or not.
Returns
- boolean
-
true/false
: If memcached is avaliable, returns true. If it is not so, returns false.
83 84 85 |
# File 'lib/feedtools/cache/memcached.rb', line 83 def self.connected? @@memcached.active? end |
.find_by_href(url) ⇒ Object
Required by FeedTools. Find a cached feed by its url.
Parameters
- url
-
String
: feed url.
Returns
- cached feed
-
FeedTools::Cache::YAML
: cached feed. If not found, returnsnil
.
67 68 69 |
# File 'lib/feedtools/cache/memcached.rb', line 67 def self.find_by_href(url) create_from_memcached(key_by_url(url)) end |
.find_by_id(id) ⇒ Object
Required by FeedTools. Find a cached feed by its key.
Parameters
- id
-
String
: primary key.
Returns
- cached feed
-
FeedTools::Cache::YAML
: cached feed. If not found, returnsnil
.
56 57 58 |
# File 'lib/feedtools/cache/memcached.rb', line 56 def self.find_by_id(id) create_from_memcached(key_by_id(id)) end |
.initialize_cache ⇒ Object
Required by FeedTools. TODO: implement this.
73 74 75 |
# File 'lib/feedtools/cache/memcached.rb', line 73 def self.initialize_cache # nothing end |
.logger ⇒ Object
Debug logger.
Returns
- path
-
String
: logger instance. Default is NullLogger (nothing to do).
117 118 119 |
# File 'lib/feedtools/cache/memcached.rb', line 117 def self.logger @@logger end |
.logger=(logger) ⇒ Object
Set logger object if use need. Logger output messages when log level is DEBUG.
Parameters
- logger
-
logger
: set logger.
125 126 127 |
# File 'lib/feedtools/cache/memcached.rb', line 125 def self.logger=(logger) @@logger = logger end |
.set_up_correctly? ⇒ Boolean
Required by FeedTools. TODO: implement this.
Returns
Currently always true.
92 93 94 |
# File 'lib/feedtools/cache/memcached.rb', line 92 def self.set_up_correctly? true end |
Instance Method Details
#id ⇒ Object
Required by FeedTools.
Primary key.
Returns
- id
-
String
: primary key.
159 160 161 |
# File 'lib/feedtools/cache/memcached.rb', line 159 def id @data['id'] end |
#id=(id) ⇒ Object
Required by FeedTools.
Set primary key.
Parameters
- id
-
String
: primary key.
169 170 171 |
# File 'lib/feedtools/cache/memcached.rb', line 169 def id=(id) @data['id'] = id end |
#load_cache(key) ⇒ Object
Load data from memcached.
Parameters
- key
-
String
: cache key.
188 189 190 191 192 193 194 195 196 197 |
# File 'lib/feedtools/cache/memcached.rb', line 188 def load_cache(key) begin @data = @@memcached.get(key) || {} @new_record = false debug "load cache: #{key}" self rescue nil end end |
#new_record? ⇒ Boolean
Required by FeedTools.
Returns whether it is a new object.
Returns
- boolean
-
true/false
: returnstrue
if the instance has not been saved yet. Returns false if the instance loaded from cache.
149 150 151 |
# File 'lib/feedtools/cache/memcached.rb', line 149 def new_record? @new_record end |
#save ⇒ Object
Required by FeedTools.
Save new or update instance.
176 177 178 179 180 181 182 |
# File 'lib/feedtools/cache/memcached.rb', line 176 def save unless id save_new_cache else update_cache end end |