module Prisma::Filter

Gets included into controllers and runs after_filter method

Protected Instance Methods

prisma_disperse_request() click to toggle source
# File lib/prisma/filter.rb, line 12
def prisma_disperse_request
  Prisma.groups.each do |name, group|
    redis_key = Prisma.redis_key(name)
    value = group.block.call(self)

    case group.type
    when :bitmap
      next if value.to_i == 0
      setbit_key = Redis::Namespace::COMMANDS.include?('setbit') ? redis_key : "#{Prisma.redis_namespace}:#{redis_key}"
      Prisma.redis.setbit setbit_key, value.to_i, 1
    when :counter
      next unless value
      Prisma.redis.incr redis_key
    end
    Prisma.redis.expire redis_key, Prisma.redis_expire if Prisma.redis_expiration_duration
  end
rescue => e
  Prisma.logger.error "Prisma experienced an exception: #{e.to_s}"
  Prisma.logger.error e.backtrace.join("\n")
end