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