class Social::Engagement
Public Class Methods
for(model_instance)
click to toggle source
# File lib/social/engagement.rb, line 4 def self.for(model_instance) url = Url.for(model_instance) for_url(url) end
for_url(url)
click to toggle source
# File lib/social/engagement.rb, line 9 def self.for_url(url) begin try_to_get_from_cache(url) rescue ActiveRecord::RecordNotFound social_engagement_from_web = from_web(url) social_engagement_from_web.save social_engagement_from_web end end
from_web(url)
click to toggle source
# File lib/social/engagement.rb, line 19 def self.from_web(url) facebook = Facebook.total_count(url) twitter = Twitter.total_count(url) SocialEngagement.new(url: url, facebook: facebook, twitter: twitter) end
Private Class Methods
try_to_get_from_cache(url)
click to toggle source
# File lib/social/engagement.rb, line 27 def self.try_to_get_from_cache(url) cached_social_engagement = SocialEngagement.for_url(url) if InvalidationPolicy.valid?(cached_social_engagement) cached_social_engagement else social_engagement_from_web = from_web(url) cached_social_engagement.update_counts(social_engagement_from_web) cached_social_engagement end end