Skip to content

Commit

Permalink
Force gem installation into envdir
Browse files Browse the repository at this point in the history
RubyGems allows OS packagers to specify defaults for `--install-dir`
and `--bindir` and these take precedence over `GEM_HOME`. The only way
to override the defaults is to explicitly specify the options ourselves
when running `gem install`.

Examples of OSes where this is the case are RedHat 9.2 and Gentoo.

Fixes #2799.
  • Loading branch information
jaysoffian committed Jun 13, 2023
1 parent f073f8e commit 9a7ed8b
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions pre_commit/languages/ruby.py
Expand Up @@ -114,6 +114,8 @@ def _install_ruby(
def install_environment(
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
) -> None:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)

if version != 'system': # pragma: win32 no cover
_install_rbenv(prefix, version)
with in_env(prefix, version):
Expand All @@ -135,6 +137,8 @@ def install_environment(
'gem', 'install',
'--no-document', '--no-format-executable',
'--no-user-install',
'--install-dir', os.path.join(envdir, 'gems'),
'--bindir', os.path.join(envdir, 'gems', 'bin'),
*prefix.star('.gem'), *additional_dependencies,
),
)

0 comments on commit 9a7ed8b

Please sign in to comment.