Improved caching.
This commit is contained in:
parent
43d99d266e
commit
d3b5cf7586
2 changed files with 29 additions and 26 deletions
|
@ -3,9 +3,12 @@ module Cache
|
||||||
puts 'Cache.delete' + key.to_s
|
puts 'Cache.delete' + key.to_s
|
||||||
Rails.cache.delete( key.to_s )
|
Rails.cache.delete( key.to_s )
|
||||||
end
|
end
|
||||||
def self.write( key, data )
|
def self.write( key, data, params = {} )
|
||||||
|
if !params[:expires_in]
|
||||||
|
params[:expires_in] = 48.hours
|
||||||
|
end
|
||||||
puts 'Cache.write: ' + key.to_s
|
puts 'Cache.write: ' + key.to_s
|
||||||
Rails.cache.write( key.to_s, data )
|
Rails.cache.write( key.to_s, data, params)
|
||||||
end
|
end
|
||||||
def self.get( key )
|
def self.get( key )
|
||||||
puts 'Cache.get: ' + key.to_s
|
puts 'Cache.get: ' + key.to_s
|
||||||
|
|
46
lib/rss.rb
46
lib/rss.rb
|
@ -1,30 +1,30 @@
|
||||||
module RSS
|
module RSS
|
||||||
def self.fetch(url, limit = 10)
|
def self.fetch(url, limit = 10)
|
||||||
cache_key = 'rss::' + url
|
cache_key = 'rss::' + url
|
||||||
items = Rails.cache.read( cache_key )
|
items = Cache.get( cache_key )
|
||||||
if !items
|
return items if items
|
||||||
puts 'fetch rss...'
|
|
||||||
response = Net::HTTP.get_response( URI.parse(url) )
|
puts 'fetch rss...'
|
||||||
if response.code.to_s != '200'
|
response = Net::HTTP.get_response( URI.parse(url) )
|
||||||
return
|
if response.code.to_s != '200'
|
||||||
end
|
return
|
||||||
rss = SimpleRSS.parse response.body
|
|
||||||
items = []
|
|
||||||
fetched = 0
|
|
||||||
rss.items.each { |item|
|
|
||||||
record = {
|
|
||||||
:id => item.id,
|
|
||||||
:title => item.title,
|
|
||||||
:summary => item.summary,
|
|
||||||
:link => item.link,
|
|
||||||
:published => item.published
|
|
||||||
}
|
|
||||||
items.push record
|
|
||||||
fetched += 1
|
|
||||||
break item if fetched == limit.to_i
|
|
||||||
}
|
|
||||||
Rails.cache.write( cache_key, items, :expires_in => 4.hours )
|
|
||||||
end
|
end
|
||||||
|
rss = SimpleRSS.parse response.body
|
||||||
|
items = []
|
||||||
|
fetched = 0
|
||||||
|
rss.items.each { |item|
|
||||||
|
record = {
|
||||||
|
:id => item.id,
|
||||||
|
:title => item.title,
|
||||||
|
:summary => item.summary,
|
||||||
|
:link => item.link,
|
||||||
|
:published => item.published
|
||||||
|
}
|
||||||
|
items.push record
|
||||||
|
fetched += 1
|
||||||
|
break item if fetched == limit.to_i
|
||||||
|
}
|
||||||
|
Cache.write( cache_key, items, :expires_in => 4.hours )
|
||||||
|
|
||||||
return items
|
return items
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue