module Bootsnap

Ruby C extensions are initialized by calling Init_<extname>.

This sets up the module hierarchy and attaches functions as methods.

We also populate some semi-static information about the current OS and so on.

Constants

InvalidConfiguration
VERSION

Public Class Methods

setup( cache_dir:, development_mode: true, load_path_cache: true, autoload_paths_cache: true, disable_trace: false, compile_cache_iseq: true, compile_cache_yaml: true ) click to toggle source
# File lib/bootsnap.rb, line 9
def self.setup(
  cache_dir:,
  development_mode: true,
  load_path_cache: true,
  autoload_paths_cache: true,
  disable_trace: false,
  compile_cache_iseq: true,
  compile_cache_yaml: true
)
  if autoload_paths_cache && !load_path_cache
    raise InvalidConfiguration, "feature 'autoload_paths_cache' depends on feature 'load_path_cache'"
  end

  setup_disable_trace if disable_trace

  Bootsnap::LoadPathCache.setup(
    cache_path:       cache_dir + '/bootsnap-load-path-cache',
    development_mode: development_mode,
    active_support:   autoload_paths_cache
  ) if load_path_cache

  Bootsnap::CompileCache.setup(
    cache_dir: cache_dir + '/bootsnap-compile-cache',
    iseq: compile_cache_iseq,
    yaml: compile_cache_yaml
  )
end
setup_disable_trace() click to toggle source
# File lib/bootsnap.rb, line 37
def self.setup_disable_trace
  if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.5.0')
    warn("from #{caller_locations(1, 1)[0]}: The 'disable_trace' method is not allowed with this Ruby version. current: #{RUBY_VERSION}, allowed version: < 2.5.0")
  else
    RubyVM::InstructionSequence.compile_option = { trace_instruction: false }
  end
end

Public Instance Methods

bundler?() click to toggle source
# File lib/bootsnap/bundler.rb, line 4
def bundler?
  return false unless defined?(::Bundler)

  # Bundler environment variable
  ['BUNDLE_BIN_PATH', 'BUNDLE_GEMFILE'].each do |current|
    return true if ENV.key?(current)
  end

  false
end