Module: ActsAsViewable::InstanceMethods
- Defined in:
- lib/acts_as_viewable/acts_as_viewable.rb
Instance Method Summary collapse
- #cache_increase(context, request) ⇒ Object
- #events_on(context) ⇒ Object
- #increase_for(context, persis_count = 100, request) ⇒ Object
- #non_cache_increase(context, request) ⇒ Object
- #views_on(context) ⇒ Object
Instance Method Details
#cache_increase(context, request) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/acts_as_viewable/acts_as_viewable.rb', line 62 def cache_increase(context,request) views = views_on(context) Rails.cache.write("#{self.class}_#{context}_count",views+1) views = Rails.cache.read("#{self.class}_#{context}_views") || [] views << {:ip => request.remote_ip , :user_agent => request.env['HTTP_USER_AGENT']} Rails.cache.write("#{self.class}_#{context}_views",views) end |
#events_on(context) ⇒ Object
36 37 38 |
# File 'lib/acts_as_viewable/acts_as_viewable.rb', line 36 def events_on(context) ViewEvent.all :conditions => {:context => context , :viewable_id => self.id , :viewable_type => self.class.to_s } end |
#increase_for(context, persis_count = 100, request) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/acts_as_viewable/acts_as_viewable.rb', line 40 def increase_for(context, persis_count = 100, request) if views_on(context) % persis_count == 0 non_cache_increase(context,request) else cache_increase(context,request) end end |
#non_cache_increase(context, request) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/acts_as_viewable/acts_as_viewable.rb', line 48 def non_cache_increase(context,request) count = Rails.cache.fetch("#{self.class}_#{context}_count") view_item = View.first :conditions => {:context => context , :viewable_id => self.id , :viewable_type => self.class.to_s } unless view_item view_item = View.new({:viewable_id => self.id , :viewable_type => self.class.to_s, :quantity => count}) end view_item.quantity = count view_item.save views = Rails.cache.read("#{self.class}_#{context}_views") || [] views.each do |k| view_item.create_view_event(k.first) end end |
#views_on(context) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/acts_as_viewable/acts_as_viewable.rb', line 29 def views_on(context) Rails.cache.fetch("#{self.class}_#{context}_count") do view=View.first :conditions => {:context => context , :viewable_id => self.id , :viewable_type => self.class.to_s } view ? view.quantity : 0 end end |