forked from Shopify/bootsnap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bootsnap.rb
49 lines (42 loc) · 1.42 KB
/
bootsnap.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# frozen_string_literal: true
require_relative('bootsnap/version')
require_relative('bootsnap/bundler')
require_relative('bootsnap/load_path_cache')
require_relative('bootsnap/compile_cache')
module Bootsnap
InvalidConfiguration = Class.new(StandardError)
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
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
end