bootsnap 1.4.4 → 1.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +129 -0
- data/README.md +46 -15
- data/exe/bootsnap +5 -0
- data/ext/bootsnap/bootsnap.c +276 -87
- data/ext/bootsnap/extconf.rb +20 -14
- data/lib/bootsnap/bundler.rb +1 -0
- data/lib/bootsnap/cli/worker_pool.rb +135 -0
- data/lib/bootsnap/cli.rb +281 -0
- data/lib/bootsnap/compile_cache/iseq.rb +51 -11
- data/lib/bootsnap/compile_cache/json.rb +79 -0
- data/lib/bootsnap/compile_cache/yaml.rb +141 -39
- data/lib/bootsnap/compile_cache.rb +14 -4
- data/lib/bootsnap/explicit_require.rb +1 -0
- data/lib/bootsnap/load_path_cache/cache.rb +47 -26
- data/lib/bootsnap/load_path_cache/change_observer.rb +4 -1
- data/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb +18 -20
- data/lib/bootsnap/load_path_cache/core_ext/loaded_features.rb +1 -0
- data/lib/bootsnap/load_path_cache/loaded_features_index.rb +51 -15
- data/lib/bootsnap/load_path_cache/path.rb +3 -2
- data/lib/bootsnap/load_path_cache/path_scanner.rb +50 -26
- data/lib/bootsnap/load_path_cache/realpath_cache.rb +5 -5
- data/lib/bootsnap/load_path_cache/store.rb +39 -15
- data/lib/bootsnap/load_path_cache.rb +3 -16
- data/lib/bootsnap/setup.rb +2 -36
- data/lib/bootsnap/version.rb +2 -1
- data/lib/bootsnap.rb +106 -17
- metadata +18 -32
- data/.github/CODEOWNERS +0 -2
- data/.github/probots.yml +0 -2
- data/.gitignore +0 -17
- data/.rubocop.yml +0 -20
- data/.travis.yml +0 -21
- data/CODE_OF_CONDUCT.md +0 -74
- data/CONTRIBUTING.md +0 -21
- data/Gemfile +0 -8
- data/README.jp.md +0 -231
- data/Rakefile +0 -12
- data/bin/ci +0 -10
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/bin/test-minimal-support +0 -7
- data/bin/testunit +0 -8
- data/bootsnap.gemspec +0 -45
- data/dev.yml +0 -10
- data/lib/bootsnap/load_path_cache/core_ext/active_support.rb +0 -106
- data/shipit.rubygems.yml +0 -0
@@ -5,7 +5,6 @@ require_relative('../explicit_require')
|
|
5
5
|
module Bootsnap
|
6
6
|
module LoadPathCache
|
7
7
|
module PathScanner
|
8
|
-
ALL_FILES = "/{,**/*/**/}*"
|
9
8
|
REQUIRABLE_EXTENSIONS = [DOT_RB] + DL_EXTENSIONS
|
10
9
|
NORMALIZE_NATIVE_EXTENSIONS = !DL_EXTENSIONS.include?(LoadPathCache::DOT_SO)
|
11
10
|
ALTERNATIVE_NATIVE_EXTENSIONS_PATTERN = /\.(o|bundle|dylib)\z/
|
@@ -16,34 +15,59 @@ module Bootsnap
|
|
16
15
|
''
|
17
16
|
end
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
requirables << relative_path
|
18
|
+
class << self
|
19
|
+
def call(path)
|
20
|
+
path = File.expand_path(path.to_s).freeze
|
21
|
+
return [[], []] unless File.directory?(path)
|
22
|
+
|
23
|
+
# If the bundle path is a descendent of this path, we do additional
|
24
|
+
# checks to prevent recursing into the bundle path as we recurse
|
25
|
+
# through this path. We don't want to scan the bundle path because
|
26
|
+
# anything useful in it will be present on other load path items.
|
27
|
+
#
|
28
|
+
# This can happen if, for example, the user adds '.' to the load path,
|
29
|
+
# and the bundle path is '.bundle'.
|
30
|
+
contains_bundle_path = BUNDLE_PATH.start_with?(path)
|
31
|
+
|
32
|
+
dirs = []
|
33
|
+
requirables = []
|
34
|
+
walk(path, nil) do |relative_path, absolute_path, is_directory|
|
35
|
+
if is_directory
|
36
|
+
dirs << os_path(relative_path)
|
37
|
+
!contains_bundle_path || !absolute_path.start_with?(BUNDLE_PATH)
|
38
|
+
elsif relative_path.end_with?(*REQUIRABLE_EXTENSIONS)
|
39
|
+
requirables << os_path(relative_path)
|
40
|
+
end
|
43
41
|
end
|
42
|
+
[requirables, dirs]
|
44
43
|
end
|
45
44
|
|
46
|
-
|
45
|
+
def walk(absolute_dir_path, relative_dir_path, &block)
|
46
|
+
Dir.foreach(absolute_dir_path) do |name|
|
47
|
+
next if name.start_with?('.')
|
48
|
+
relative_path = relative_dir_path ? File.join(relative_dir_path, name) : name
|
49
|
+
|
50
|
+
absolute_path = "#{absolute_dir_path}/#{name}"
|
51
|
+
if File.directory?(absolute_path)
|
52
|
+
if yield relative_path, absolute_path, true
|
53
|
+
walk(absolute_path, relative_path, &block)
|
54
|
+
end
|
55
|
+
else
|
56
|
+
yield relative_path, absolute_path, false
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
if RUBY_VERSION >= '3.1'
|
62
|
+
def os_path(path)
|
63
|
+
path.freeze
|
64
|
+
end
|
65
|
+
else
|
66
|
+
def os_path(path)
|
67
|
+
path.force_encoding(Encoding::US_ASCII) if path.ascii_only?
|
68
|
+
path.freeze
|
69
|
+
end
|
70
|
+
end
|
47
71
|
end
|
48
72
|
end
|
49
73
|
end
|
@@ -15,15 +15,15 @@ module Bootsnap
|
|
15
15
|
|
16
16
|
def realpath(caller_location, path)
|
17
17
|
base = File.dirname(caller_location)
|
18
|
-
|
19
|
-
|
20
|
-
File.join(dir, File.basename(file))
|
18
|
+
abspath = File.expand_path(path, base).freeze
|
19
|
+
find_file(abspath)
|
21
20
|
end
|
22
21
|
|
23
22
|
def find_file(name)
|
24
|
-
|
23
|
+
return File.realpath(name).freeze if File.exist?(name)
|
24
|
+
CACHED_EXTENSIONS.each do |ext|
|
25
25
|
filename = "#{name}#{ext}"
|
26
|
-
return File.realpath(filename) if File.exist?(filename)
|
26
|
+
return File.realpath(filename).freeze if File.exist?(filename)
|
27
27
|
end
|
28
28
|
name
|
29
29
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative('../explicit_require')
|
2
3
|
|
3
4
|
Bootsnap::ExplicitRequire.with_gems('msgpack') { require('msgpack') }
|
@@ -6,12 +7,15 @@ Bootsnap::ExplicitRequire.from_rubylibdir('fileutils')
|
|
6
7
|
module Bootsnap
|
7
8
|
module LoadPathCache
|
8
9
|
class Store
|
10
|
+
VERSION_KEY = '__bootsnap_ruby_version__'
|
11
|
+
CURRENT_VERSION = "#{RUBY_REVISION}-#{RUBY_PLATFORM}".freeze
|
12
|
+
|
9
13
|
NestedTransactionError = Class.new(StandardError)
|
10
14
|
SetOutsideTransactionNotAllowed = Class.new(StandardError)
|
11
15
|
|
12
16
|
def initialize(store_path)
|
13
17
|
@store_path = store_path
|
14
|
-
@
|
18
|
+
@txn_mutex = Mutex.new
|
15
19
|
@dirty = false
|
16
20
|
load_data
|
17
21
|
end
|
@@ -21,7 +25,7 @@ module Bootsnap
|
|
21
25
|
end
|
22
26
|
|
23
27
|
def fetch(key)
|
24
|
-
raise(SetOutsideTransactionNotAllowed) unless @
|
28
|
+
raise(SetOutsideTransactionNotAllowed) unless @txn_mutex.owned?
|
25
29
|
v = get(key)
|
26
30
|
unless v
|
27
31
|
@dirty = true
|
@@ -32,7 +36,7 @@ module Bootsnap
|
|
32
36
|
end
|
33
37
|
|
34
38
|
def set(key, value)
|
35
|
-
raise(SetOutsideTransactionNotAllowed) unless @
|
39
|
+
raise(SetOutsideTransactionNotAllowed) unless @txn_mutex.owned?
|
36
40
|
if value != @data[key]
|
37
41
|
@dirty = true
|
38
42
|
@data[key] = value
|
@@ -40,12 +44,14 @@ module Bootsnap
|
|
40
44
|
end
|
41
45
|
|
42
46
|
def transaction
|
43
|
-
raise(NestedTransactionError) if @
|
44
|
-
@
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
47
|
+
raise(NestedTransactionError) if @txn_mutex.owned?
|
48
|
+
@txn_mutex.synchronize do
|
49
|
+
begin
|
50
|
+
yield
|
51
|
+
ensure
|
52
|
+
commit_transaction
|
53
|
+
end
|
54
|
+
end
|
49
55
|
end
|
50
56
|
|
51
57
|
private
|
@@ -59,12 +65,23 @@ module Bootsnap
|
|
59
65
|
|
60
66
|
def load_data
|
61
67
|
@data = begin
|
62
|
-
|
63
|
-
|
68
|
+
data = File.open(@store_path, encoding: Encoding::BINARY) do |io|
|
69
|
+
MessagePack.load(io)
|
70
|
+
end
|
71
|
+
if data.is_a?(Hash) && data[VERSION_KEY] == CURRENT_VERSION
|
72
|
+
data
|
73
|
+
else
|
74
|
+
default_data
|
75
|
+
end
|
76
|
+
# handle malformed data due to upgrade incompatibility
|
64
77
|
rescue Errno::ENOENT, MessagePack::MalformedFormatError, MessagePack::UnknownExtTypeError, EOFError
|
65
|
-
|
66
|
-
rescue ArgumentError =>
|
67
|
-
|
78
|
+
default_data
|
79
|
+
rescue ArgumentError => error
|
80
|
+
if error.message =~ /negative array size/
|
81
|
+
default_data
|
82
|
+
else
|
83
|
+
raise
|
84
|
+
end
|
68
85
|
end
|
69
86
|
end
|
70
87
|
|
@@ -76,10 +93,17 @@ module Bootsnap
|
|
76
93
|
exclusive_write = File::Constants::CREAT | File::Constants::EXCL | File::Constants::WRONLY
|
77
94
|
# `encoding:` looks redundant wrt `binwrite`, but necessary on windows
|
78
95
|
# because binary is part of mode.
|
79
|
-
File.
|
96
|
+
File.open(tmp, mode: exclusive_write, encoding: Encoding::BINARY) do |io|
|
97
|
+
MessagePack.dump(@data, io, freeze: true)
|
98
|
+
end
|
80
99
|
FileUtils.mv(tmp, @store_path)
|
81
100
|
rescue Errno::EEXIST
|
82
101
|
retry
|
102
|
+
rescue SystemCallError
|
103
|
+
end
|
104
|
+
|
105
|
+
def default_data
|
106
|
+
{ VERSION_KEY => CURRENT_VERSION }
|
83
107
|
end
|
84
108
|
end
|
85
109
|
end
|
@@ -28,10 +28,9 @@ module Bootsnap
|
|
28
28
|
CACHED_EXTENSIONS = DLEXT2 ? [DOT_RB, DLEXT, DLEXT2] : [DOT_RB, DLEXT]
|
29
29
|
|
30
30
|
class << self
|
31
|
-
attr_reader(:load_path_cache, :
|
32
|
-
:loaded_features_index, :realpath_cache)
|
31
|
+
attr_reader(:load_path_cache, :loaded_features_index, :realpath_cache)
|
33
32
|
|
34
|
-
def setup(cache_path:, development_mode
|
33
|
+
def setup(cache_path:, development_mode:)
|
35
34
|
unless supported?
|
36
35
|
warn("[bootsnap/setup] Load path caching is not supported on this implementation of Ruby") if $VERBOSE
|
37
36
|
return
|
@@ -45,23 +44,11 @@ module Bootsnap
|
|
45
44
|
@load_path_cache = Cache.new(store, $LOAD_PATH, development_mode: development_mode)
|
46
45
|
require_relative('load_path_cache/core_ext/kernel_require')
|
47
46
|
require_relative('load_path_cache/core_ext/loaded_features')
|
48
|
-
|
49
|
-
if active_support
|
50
|
-
# this should happen after setting up the initial cache because it
|
51
|
-
# loads a lot of code. It's better to do after +require+ is optimized.
|
52
|
-
require('active_support/dependencies')
|
53
|
-
@autoload_paths_cache = Cache.new(
|
54
|
-
store,
|
55
|
-
::ActiveSupport::Dependencies.autoload_paths,
|
56
|
-
development_mode: development_mode
|
57
|
-
)
|
58
|
-
require_relative('load_path_cache/core_ext/active_support')
|
59
|
-
end
|
60
47
|
end
|
61
48
|
|
62
49
|
def supported?
|
63
50
|
RUBY_ENGINE == 'ruby' &&
|
64
|
-
RUBY_PLATFORM =~ /darwin|linux|bsd/
|
51
|
+
RUBY_PLATFORM =~ /darwin|linux|bsd|mswin|mingw|cygwin/
|
65
52
|
end
|
66
53
|
end
|
67
54
|
end
|
data/lib/bootsnap/setup.rb
CHANGED
@@ -1,38 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative('../bootsnap')
|
2
3
|
|
3
|
-
|
4
|
-
development_mode = ['', nil, 'development'].include?(env)
|
5
|
-
|
6
|
-
cache_dir = ENV['BOOTSNAP_CACHE_DIR']
|
7
|
-
unless cache_dir
|
8
|
-
config_dir_frame = caller.detect do |line|
|
9
|
-
line.include?('/config/')
|
10
|
-
end
|
11
|
-
|
12
|
-
unless config_dir_frame
|
13
|
-
$stderr.puts("[bootsnap/setup] couldn't infer cache directory! Either:")
|
14
|
-
$stderr.puts("[bootsnap/setup] 1. require bootsnap/setup from your application's config directory; or")
|
15
|
-
$stderr.puts("[bootsnap/setup] 2. Define the environment variable BOOTSNAP_CACHE_DIR")
|
16
|
-
|
17
|
-
raise("couldn't infer bootsnap cache directory")
|
18
|
-
end
|
19
|
-
|
20
|
-
path = config_dir_frame.split(/:\d+:/).first
|
21
|
-
path = File.dirname(path) until File.basename(path) == 'config'
|
22
|
-
app_root = File.dirname(path)
|
23
|
-
|
24
|
-
cache_dir = File.join(app_root, 'tmp', 'cache')
|
25
|
-
end
|
26
|
-
|
27
|
-
ruby_version = Gem::Version.new(RUBY_VERSION)
|
28
|
-
iseq_cache_enabled = ruby_version < Gem::Version.new('2.5.0') || ruby_version >= Gem::Version.new('2.6.0')
|
29
|
-
|
30
|
-
Bootsnap.setup(
|
31
|
-
cache_dir: cache_dir,
|
32
|
-
development_mode: development_mode,
|
33
|
-
load_path_cache: true,
|
34
|
-
autoload_paths_cache: true, # assume rails. open to PRs to impl. detection
|
35
|
-
disable_trace: false,
|
36
|
-
compile_cache_iseq: iseq_cache_enabled,
|
37
|
-
compile_cache_yaml: true,
|
38
|
-
)
|
4
|
+
Bootsnap.default_setup
|
data/lib/bootsnap/version.rb
CHANGED
data/lib/bootsnap.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative('bootsnap/version')
|
2
4
|
require_relative('bootsnap/bundler')
|
3
5
|
require_relative('bootsnap/load_path_cache')
|
@@ -6,42 +8,129 @@ require_relative('bootsnap/compile_cache')
|
|
6
8
|
module Bootsnap
|
7
9
|
InvalidConfiguration = Class.new(StandardError)
|
8
10
|
|
11
|
+
class << self
|
12
|
+
attr_reader :logger
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.log!
|
16
|
+
self.logger = $stderr.method(:puts)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.logger=(logger)
|
20
|
+
@logger = logger
|
21
|
+
if logger.respond_to?(:debug)
|
22
|
+
self.instrumentation = ->(event, path) { @logger.debug("[Bootsnap] #{event} #{path}") }
|
23
|
+
else
|
24
|
+
self.instrumentation = ->(event, path) { @logger.call("[Bootsnap] #{event} #{path}") }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.instrumentation=(callback)
|
29
|
+
@instrumentation = callback
|
30
|
+
if respond_to?(:instrumentation_enabled=, true)
|
31
|
+
self.instrumentation_enabled = !!callback
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def self._instrument(event, path)
|
36
|
+
@instrumentation.call(event, path)
|
37
|
+
end
|
38
|
+
|
9
39
|
def self.setup(
|
10
40
|
cache_dir:,
|
11
41
|
development_mode: true,
|
12
42
|
load_path_cache: true,
|
13
|
-
autoload_paths_cache:
|
14
|
-
disable_trace:
|
43
|
+
autoload_paths_cache: nil,
|
44
|
+
disable_trace: nil,
|
15
45
|
compile_cache_iseq: true,
|
16
|
-
compile_cache_yaml: true
|
46
|
+
compile_cache_yaml: true,
|
47
|
+
compile_cache_json: true
|
17
48
|
)
|
18
|
-
|
19
|
-
|
49
|
+
unless autoload_paths_cache.nil?
|
50
|
+
warn "[DEPRECATED] Bootsnap's `autoload_paths_cache:` option is deprecated and will be removed. " \
|
51
|
+
"If you use Zeitwerk this option is useless, and if you are still using the classic autoloader " \
|
52
|
+
"upgrading is recommended."
|
53
|
+
end
|
54
|
+
|
55
|
+
unless disable_trace.nil?
|
56
|
+
warn "[DEPRECATED] Bootsnap's `disable_trace:` option is deprecated and will be removed. " \
|
57
|
+
"If you use Ruby 2.5 or newer this option is useless, if not upgrading is recommended."
|
20
58
|
end
|
21
59
|
|
22
|
-
|
60
|
+
if compile_cache_iseq && !iseq_cache_supported?
|
61
|
+
warn "Ruby 2.5 has a bug that break code tracing when code is loaded from cache. It is recommened " \
|
62
|
+
"to turn `compile_cache_iseq` off on Ruby 2.5"
|
63
|
+
end
|
23
64
|
|
24
65
|
Bootsnap::LoadPathCache.setup(
|
25
|
-
cache_path: cache_dir + '/bootsnap
|
66
|
+
cache_path: cache_dir + '/bootsnap/load-path-cache',
|
26
67
|
development_mode: development_mode,
|
27
|
-
active_support: autoload_paths_cache
|
28
68
|
) if load_path_cache
|
29
69
|
|
30
70
|
Bootsnap::CompileCache.setup(
|
31
|
-
cache_dir: cache_dir + '/bootsnap
|
71
|
+
cache_dir: cache_dir + '/bootsnap/compile-cache',
|
32
72
|
iseq: compile_cache_iseq,
|
33
|
-
yaml: compile_cache_yaml
|
73
|
+
yaml: compile_cache_yaml,
|
74
|
+
json: compile_cache_json,
|
34
75
|
)
|
35
76
|
end
|
36
77
|
|
37
|
-
def self.
|
38
|
-
if
|
39
|
-
|
40
|
-
|
41
|
-
|
78
|
+
def self.iseq_cache_supported?
|
79
|
+
return @iseq_cache_supported if defined? @iseq_cache_supported
|
80
|
+
|
81
|
+
ruby_version = Gem::Version.new(RUBY_VERSION)
|
82
|
+
@iseq_cache_supported = ruby_version < Gem::Version.new('2.5.0') || ruby_version >= Gem::Version.new('2.6.0')
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.default_setup
|
86
|
+
env = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || ENV['ENV']
|
87
|
+
development_mode = ['', nil, 'development'].include?(env)
|
88
|
+
|
89
|
+
unless ENV['DISABLE_BOOTSNAP']
|
90
|
+
cache_dir = ENV['BOOTSNAP_CACHE_DIR']
|
91
|
+
unless cache_dir
|
92
|
+
config_dir_frame = caller.detect do |line|
|
93
|
+
line.include?('/config/')
|
94
|
+
end
|
95
|
+
|
96
|
+
unless config_dir_frame
|
97
|
+
$stderr.puts("[bootsnap/setup] couldn't infer cache directory! Either:")
|
98
|
+
$stderr.puts("[bootsnap/setup] 1. require bootsnap/setup from your application's config directory; or")
|
99
|
+
$stderr.puts("[bootsnap/setup] 2. Define the environment variable BOOTSNAP_CACHE_DIR")
|
100
|
+
|
101
|
+
raise("couldn't infer bootsnap cache directory")
|
102
|
+
end
|
103
|
+
|
104
|
+
path = config_dir_frame.split(/:\d+:/).first
|
105
|
+
path = File.dirname(path) until File.basename(path) == 'config'
|
106
|
+
app_root = File.dirname(path)
|
107
|
+
|
108
|
+
cache_dir = File.join(app_root, 'tmp', 'cache')
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
setup(
|
113
|
+
cache_dir: cache_dir,
|
114
|
+
development_mode: development_mode,
|
115
|
+
load_path_cache: !ENV['DISABLE_BOOTSNAP_LOAD_PATH_CACHE'],
|
116
|
+
compile_cache_iseq: !ENV['DISABLE_BOOTSNAP_COMPILE_CACHE'] && iseq_cache_supported?,
|
117
|
+
compile_cache_yaml: !ENV['DISABLE_BOOTSNAP_COMPILE_CACHE'],
|
118
|
+
compile_cache_json: !ENV['DISABLE_BOOTSNAP_COMPILE_CACHE'],
|
42
119
|
)
|
43
|
-
|
44
|
-
|
120
|
+
|
121
|
+
if ENV['BOOTSNAP_LOG']
|
122
|
+
log!
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
128
|
+
def self.absolute_path?(path)
|
129
|
+
path[1] == ':'
|
130
|
+
end
|
131
|
+
else
|
132
|
+
def self.absolute_path?(path)
|
133
|
+
path.start_with?('/')
|
45
134
|
end
|
46
135
|
end
|
47
136
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootsnap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Burke Libbey
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,28 +28,28 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake-compiler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -97,44 +97,31 @@ dependencies:
|
|
97
97
|
description: Boot large ruby/rails apps faster
|
98
98
|
email:
|
99
99
|
- burke.libbey@shopify.com
|
100
|
-
executables:
|
100
|
+
executables:
|
101
|
+
- bootsnap
|
101
102
|
extensions:
|
102
103
|
- ext/bootsnap/extconf.rb
|
103
104
|
extra_rdoc_files: []
|
104
105
|
files:
|
105
|
-
- ".github/CODEOWNERS"
|
106
|
-
- ".github/probots.yml"
|
107
|
-
- ".gitignore"
|
108
|
-
- ".rubocop.yml"
|
109
|
-
- ".travis.yml"
|
110
106
|
- CHANGELOG.md
|
111
|
-
- CODE_OF_CONDUCT.md
|
112
|
-
- CONTRIBUTING.md
|
113
|
-
- Gemfile
|
114
107
|
- LICENSE.txt
|
115
|
-
- README.jp.md
|
116
108
|
- README.md
|
117
|
-
-
|
118
|
-
- bin/ci
|
119
|
-
- bin/console
|
120
|
-
- bin/setup
|
121
|
-
- bin/test-minimal-support
|
122
|
-
- bin/testunit
|
123
|
-
- bootsnap.gemspec
|
124
|
-
- dev.yml
|
109
|
+
- exe/bootsnap
|
125
110
|
- ext/bootsnap/bootsnap.c
|
126
111
|
- ext/bootsnap/bootsnap.h
|
127
112
|
- ext/bootsnap/extconf.rb
|
128
113
|
- lib/bootsnap.rb
|
129
114
|
- lib/bootsnap/bundler.rb
|
115
|
+
- lib/bootsnap/cli.rb
|
116
|
+
- lib/bootsnap/cli/worker_pool.rb
|
130
117
|
- lib/bootsnap/compile_cache.rb
|
131
118
|
- lib/bootsnap/compile_cache/iseq.rb
|
119
|
+
- lib/bootsnap/compile_cache/json.rb
|
132
120
|
- lib/bootsnap/compile_cache/yaml.rb
|
133
121
|
- lib/bootsnap/explicit_require.rb
|
134
122
|
- lib/bootsnap/load_path_cache.rb
|
135
123
|
- lib/bootsnap/load_path_cache/cache.rb
|
136
124
|
- lib/bootsnap/load_path_cache/change_observer.rb
|
137
|
-
- lib/bootsnap/load_path_cache/core_ext/active_support.rb
|
138
125
|
- lib/bootsnap/load_path_cache/core_ext/kernel_require.rb
|
139
126
|
- lib/bootsnap/load_path_cache/core_ext/loaded_features.rb
|
140
127
|
- lib/bootsnap/load_path_cache/loaded_features_index.rb
|
@@ -144,7 +131,6 @@ files:
|
|
144
131
|
- lib/bootsnap/load_path_cache/store.rb
|
145
132
|
- lib/bootsnap/setup.rb
|
146
133
|
- lib/bootsnap/version.rb
|
147
|
-
- shipit.rubygems.yml
|
148
134
|
homepage: https://github.com/Shopify/bootsnap
|
149
135
|
licenses:
|
150
136
|
- MIT
|
@@ -152,6 +138,7 @@ metadata:
|
|
152
138
|
bug_tracker_uri: https://github.com/Shopify/bootsnap/issues
|
153
139
|
changelog_uri: https://github.com/Shopify/bootsnap/blob/master/CHANGELOG.md
|
154
140
|
source_code_uri: https://github.com/Shopify/bootsnap
|
141
|
+
allowed_push_host: https://rubygems.org
|
155
142
|
post_install_message:
|
156
143
|
rdoc_options: []
|
157
144
|
require_paths:
|
@@ -160,15 +147,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
147
|
requirements:
|
161
148
|
- - ">="
|
162
149
|
- !ruby/object:Gem::Version
|
163
|
-
version: 2.
|
150
|
+
version: 2.3.0
|
164
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
152
|
requirements:
|
166
153
|
- - ">="
|
167
154
|
- !ruby/object:Gem::Version
|
168
155
|
version: '0'
|
169
156
|
requirements: []
|
170
|
-
|
171
|
-
rubygems_version: 2.7.6
|
157
|
+
rubygems_version: 3.2.20
|
172
158
|
signing_key:
|
173
159
|
specification_version: 4
|
174
160
|
summary: Boot large ruby/rails apps faster
|
data/.github/CODEOWNERS
DELETED
data/.github/probots.yml
DELETED
data/.gitignore
DELETED
data/.rubocop.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
inherit_from:
|
2
|
-
- http://shopify.github.io/ruby-style-guide/rubocop.yml
|
3
|
-
|
4
|
-
AllCops:
|
5
|
-
Exclude:
|
6
|
-
- 'vendor/**/*'
|
7
|
-
- 'tmp/**/*'
|
8
|
-
TargetRubyVersion: '2.2'
|
9
|
-
|
10
|
-
# This doesn't take into account retrying from an exception
|
11
|
-
Lint/HandleExceptions:
|
12
|
-
Enabled: false
|
13
|
-
|
14
|
-
# allow String.new to create mutable strings
|
15
|
-
Style/EmptyLiteral:
|
16
|
-
Enabled: false
|
17
|
-
|
18
|
-
# allow the use of globals which makes sense in a CLI app like this
|
19
|
-
Style/GlobalVars:
|
20
|
-
Enabled: false
|
data/.travis.yml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
sudo: false
|
3
|
-
|
4
|
-
os:
|
5
|
-
- linux
|
6
|
-
- osx
|
7
|
-
|
8
|
-
rvm:
|
9
|
-
- ruby-2.4
|
10
|
-
- ruby-2.5
|
11
|
-
- ruby-head
|
12
|
-
|
13
|
-
matrix:
|
14
|
-
allow_failures:
|
15
|
-
- rvm: ruby-head
|
16
|
-
include:
|
17
|
-
- rvm: jruby
|
18
|
-
os: linux
|
19
|
-
env: MINIMAL_SUPPORT=1
|
20
|
-
|
21
|
-
script: bin/ci
|