Sha256: 70b86b21d5eb55d8ece61d12ecfdc666f768f93839decb1a230788c17617a3f7

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require "active_support"
require "cacheflow/version"

module Cacheflow
  def self.activate
    require "cacheflow/memcached" if defined?(Dalli)
    require "cacheflow/redis" if defined?(Redis)
  end

  def self.silenced?
    Thread.current[:cacheflow_silenced]
  end

  def self.silence
    previous_value = silenced?
    begin
      Thread.current[:cacheflow_silenced] = true
      yield
    ensure
      Thread.current[:cacheflow_silenced] = previous_value
    end
  end

  def self.silence_sidekiq!
    ::Sidekiq.singleton_class.prepend(Cacheflow::Sidekiq::ClassMethods)
    ::Sidekiq::Client.prepend(Cacheflow::Sidekiq::Client::InstanceMethods)
  end

  module Sidekiq
    module ClassMethods
      def redis(*_)
        Cacheflow.silence do
          super
        end
      end
    end

    module Client
      module InstanceMethods
        def push(*_)
          Cacheflow.silence do
            super
          end
        end
      end
    end
  end
end

if defined?(Rails)
  require "cacheflow/railtie"
else
  Cacheflow.activate
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cacheflow-0.2.0 lib/cacheflow.rb
cacheflow-0.1.1 lib/cacheflow.rb