class Redcrumbs::Crumb
Public Class Methods
build_with_modifications(subject)
click to toggle source
# File lib/redcrumbs/crumb.rb, line 31 def self.build_with_modifications(subject) return if subject.watched_changes.empty? new(:modifications => subject.watched_changes, :subject => subject) end
count()
click to toggle source
Designed to mimic ActiveRecord’s count. Probably not performant and only should be used for tests really
# File lib/redcrumbs/crumb.rb, line 68 def self.count Redcrumbs.redis.keys("redcrumbs_crumbs:*").size - 8 end
created_by(creator)
click to toggle source
# File lib/redcrumbs/crumb.rb, line 37 def self.created_by(creator) all(:creator_id => creator[Redcrumbs.creator_primary_key]) & all(:creator_type => creator.class.name) end
new(params = {})
click to toggle source
# File lib/redcrumbs/crumb.rb, line 26 def initialize(params = {}) self.subject = params[:subject] self.modifications = params[:modifications] end
targetted_by(target)
click to toggle source
# File lib/redcrumbs/crumb.rb, line 42 def self.targetted_by(target) all(:target_id => target[Redcrumbs.target_primary_key]) & all(:target_type => target.class.name) end
Public Instance Methods
expires_at()
click to toggle source
# File lib/redcrumbs/crumb.rb, line 86 def expires_at Time.now + time_to_live if time_to_live end
mortal?()
click to toggle source
Expiry
# File lib/redcrumbs/crumb.rb, line 74 def mortal? return false if new? time_to_live >= 0 end
redis_key()
click to toggle source
# File lib/redcrumbs/crumb.rb, line 63 def redis_key "redcrumbs_crumbs:#{id}" if id end
subject=(subject)
click to toggle source
Overrides the subject setter created by the SerializableAttributes module.
# File lib/redcrumbs/crumb.rb, line 50 def subject=(subject) @subject = subject self.stored_subject = subject ? serialize(:subject, subject) : {} self.subject_id = subject ? subject.id : nil assign_type_for(:subject, subject) self.target = subject.target if subject.respond_to?(:target) self.creator = subject.creator if subject.respond_to?(:creator) subject end
time_to_live()
click to toggle source
# File lib/redcrumbs/crumb.rb, line 80 def time_to_live return nil if new? @ttl ||= Redcrumbs.redis.ttl(redis_key) end
Private Instance Methods
expire_from_now()
click to toggle source
# File lib/redcrumbs/crumb.rb, line 96 def expire_from_now Time.now + Redcrumbs.mortality end
set_mortality()
click to toggle source
# File lib/redcrumbs/crumb.rb, line 92 def set_mortality Redcrumbs.redis.expireat(redis_key, expire_from_now.to_i) if Redcrumbs.mortality end