module Firebolt

Constants

CONFIGURE_MUTEX
FIREBOLT_MUTEX

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

VERSION

Public Class Methods

config() click to toggle source
# 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
configure() { |config| ... } click to toggle source
# File lib/firebolt.rb, line 36
def self.configure
  CONFIGURE_MUTEX.synchronize do
    yield(config)
  end
end
initialize!(&block) click to toggle source
# 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_scheduler() click to toggle source
# 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!() click to toggle source
# File lib/firebolt.rb, line 72
def self.initialized!
  return @initialized unless @initialized.nil?

  FIREBOLT_MUTEX.synchronize do
    @initialized ||= true
  end

  @initialized
end
initialized?() click to toggle source
# File lib/firebolt.rb, line 82
def self.initialized?
  !! @initialized
end
skip_warming?() click to toggle source
# File lib/firebolt.rb, line 86
def self.skip_warming?
  ENV['FIREBOLT_SKIP_WARMING'] || ENV['RAILS_ENV'] == 'test' || config.skip_warming == true
end