Module: Firebolt

Extended by:
Cache
Defined in:
lib/firebolt.rb,
lib/firebolt/keys.rb,
lib/firebolt/cache.rb,
lib/firebolt/config.rb,
lib/firebolt/warmer.rb,
lib/firebolt/railtie.rb,
lib/firebolt/version.rb,
lib/firebolt/file_warmer.rb,
lib/firebolt/warm_cache_job.rb

Defined Under Namespace

Modules: Cache, Keys, Warmer Classes: Config, FileWarmer, Railtie, WarmCacheJob

Constant Summary collapse

FIREBOLT_MUTEX =

Using a mutex to control access while creating a ::Firebolt::Config

::Mutex.new
CONFIGURE_MUTEX =
::Mutex.new
VERSION =
"0.14.0"

Class Method Summary collapse

Methods included from Cache

delete, fetch, read, reset_salt!, salt, write

Methods included from Keys

#cache_key, #cache_key_with_salt, #namespace, #salt_key

Class Method Details

.configObject



26
27
28
29
30
31
32
33
34
# File 'lib/firebolt.rb', line 26

def self.config
  return @config unless @config.nil?

  FIREBOLT_MUTEX.synchronize do
    @config ||= ::Firebolt::Config.new
  end

  @config
end

.configureObject



36
37
38
39
40
# File 'lib/firebolt.rb', line 36

def self.configure
  CONFIGURE_MUTEX.synchronize do
    yield(config)
  end
end

.initialize!(&block) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/firebolt.rb', line 53

def self.initialize!(&block)
  return if initialized?

  configure(&block) if block_given?

  raise "Firebolt.config.cache has not been set" unless config.cache
  raise "Firebolt.config.warmer has not been set" unless config.warmer

  unless skip_warming?
    initialize_rufus_scheduler

    # Initial warming
    warmer = config.use_file_warmer? ? ::Firebolt::FileWarmer : config.warmer
    ::Concurrent::Future.execute { ::Firebolt::WarmCacheJob.new.perform(warmer) }
  end

  initialized!
end

.initialize_rufus_schedulerObject



42
43
44
45
46
47
48
49
50
51
# File 'lib/firebolt.rb', line 42

def self.initialize_rufus_scheduler
  return if config.warming_frequency.nil?

  warming_frequency = config.warming_frequency.to_s

  scheduler = ::Rufus::Scheduler.new
  scheduler.every(warming_frequency) do
    ::Firebolt::WarmCacheJob.new.perform(config.warmer)
  end
end

.initialized!Object



72
73
74
75
76
77
78
79
80
# File 'lib/firebolt.rb', line 72

def self.initialized!
  return @initialized unless @initialized.nil?

  FIREBOLT_MUTEX.synchronize do
    @initialized ||= true
  end

  @initialized
end

.initialized?Boolean



82
83
84
# File 'lib/firebolt.rb', line 82

def self.initialized?
  !! @initialized
end

.skip_warming?Boolean



86
87
88
# File 'lib/firebolt.rb', line 86

def self.skip_warming?
  ENV['FIREBOLT_SKIP_WARMING'] || ENV['RAILS_ENV'] == 'test' || config.skip_warming == true
end