Skip to content

Commit 7d3e8fa

Browse files
authored
Load bundled gems on expected version (sds#859)
Fixes sds#789 `psych` is no longer a default gem, but current and old ruby still ships with it. When we `require 'yaml'`, we activate that gem in whatever version that is bundled with ruby. Later on, we load bundler, and we `Bundler.setup`, which will then activate whatever version specified in the lock file. More often than not, they might not match. The approach in this PR is to strip the `yaml` dependency completely from the hook scripts, while retaining the ability to configure the Gemfile using it.
1 parent eff94a7 commit 7d3e8fa

10 files changed

+20
-80
lines changed

template-dir/hooks/commit-msg

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/overcommit-hook

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/post-checkout

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/post-commit

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/post-merge

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/post-rewrite

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/pre-commit

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/pre-push

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/pre-rebase

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

template-dir/hooks/prepare-commit-msg

+2-8
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ if hook_type == 'overcommit-hook'
2727
end
2828

2929
# Check if Overcommit should invoke a Bundler context for loading gems
30-
require 'yaml'
31-
# rubocop:disable Style/RescueModifier
32-
gemfile =
33-
begin
34-
YAML.load_file('.overcommit.yml', aliases: true)['gemfile']
35-
rescue ArgumentError
36-
YAML.load_file('.overcommit.yml')['gemfile']
37-
end rescue nil
30+
config = File.read('.overcommit.yml') =~ /gemfile: ['"]?(.*)['"]?/
31+
gemfile = Regexp.last_match(1)
3832

3933
if gemfile
4034
ENV['BUNDLE_GEMFILE'] = gemfile

0 commit comments

Comments
 (0)