Module: Caddy

Defined in:
lib/caddy.rb,
lib/caddy/cache.rb,
lib/caddy/version.rb,
lib/caddy/task_observer.rb

Overview

Caddy gives you a auto-updating global cache to speed up requests

Defined Under Namespace

Classes: Cache

Constant Summary collapse

VERSION =

Current version

"1.6.0".freeze

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.error_handlerProc

Returns called when any cache refresher throws an exception (or times out).

Returns:

  • (Proc)

    called when any cache refresher throws an exception (or times out)



13
14
15
# File 'lib/caddy.rb', line 13

def error_handler
  @error_handler
end

.loggerObject



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/caddy.rb', line 62

def self.logger
  @logger ||= begin
    if defined?(Rails.logger)
      Rails.logger
    else
      @logger ||= Logger.new(STDOUT).tap do |logger|
        logger.formatter = -> (_, datetime, _, msg) { "#{datetime}: #{msg}\n" }
      end
    end
  end
end

Instance Attribute Details

#loggerLogger

Returns logger used for all non-fatals; defaults to the Rails logger if it exists.

Returns:

  • (Logger)

    logger used for all non-fatals; defaults to the Rails logger if it exists



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/caddy.rb', line 62

def self.logger
  @logger ||= begin
    if defined?(Rails.logger)
      Rails.logger
    else
      @logger ||= Logger.new(STDOUT).tap do |logger|
        logger.formatter = -> (_, datetime, _, msg) { "#{datetime}: #{msg}\n" }
      end
    end
  end
end

Class Method Details

.[](k) ⇒ Caddy::Cache

Returns the cache object at a key.

If the cache at k does not exist yet, Caddy will initialize an empty one.

Parameters:

  • k (Symbol)

    the cache key.

Returns:



29
30
31
# File 'lib/caddy.rb', line 29

def self.[](k)
  @caches[k]
end

.restartObject

Start and then stop all refreshers. Useful for triggering an immediate refresh of all caches.



55
56
57
58
# File 'lib/caddy.rb', line 55

def self.restart
  stop
  start
end

.startObject

Starts the Caddy refresh processes for all caches.

If the refresh process was started pre-fork, Caddy will error out, as this means the refresh process would have been killed by the fork.

Caddy freezes the hash of caches at this point, so no more further caches can be added after start.



40
41
42
43
44
45
# File 'lib/caddy.rb', line 40

def self.start
  raise_if_forked if @needs_fork_check
  logger.info "Starting Caddy with refreshers: #{@caches.keys.join(', ')}"

  @caches.values.each(&:start).all?
end

.stopObject

Cleanly shut down all currently running refreshers.



48
49
50
51
52
# File 'lib/caddy.rb', line 48

def self.stop
  logger.info "Stopping Caddy refreshers"

  @caches.values.each(&:stop).all?
end