Skip to content

Preserve gem path so that we use the same gems

Lin Jen-Shin requested to merge preserve-gem-path into master

What does this MR do?

Preserve gem path so that we use the same gems

Are there points in the code the reviewer needs to double check?

I wish this does not break for the other people using bundler in a different way.

Why was this MR needed?

Without this patch, I would end up with:

An error occurred in a `before(:suite)` hook.
Failure/Error: raise "could not connect to gitaly at #{socket.inspect} after #{sleep_time} seconds"

RuntimeError:
  could not connect to gitaly at "tmp/tests/gitaly/gitaly.socket" after 10 seconds

Digging into it, it's because scripts/gitaly-test-spawn could not spawn the process, because it cannot find the installed gems.

I personally installed all my gems under $HOME, namely with:

  • gem install rake --user-install or:
  • bundle install --path ~/.gem

The gems would be installed to ~/.gem/ruby/2.4.0/gems, where the version is Ruby ABI version.

Now we're changing $HOME, making RubyGems think that the gems would be installed to tmp/tests/ruby/2.4.0/gems which is apparently not the case.

In order to workaround this, we could preserve $GEM_PATH populated by RubyGems, ignoring the default path based on $HOME.

Does this MR meet the acceptance criteria?

  • Review
    • Has been reviewed by Backend

What are the relevant issue numbers?

This is based on https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15614

@jacobvosmaer-gitlab Could you please review?

Merge request reports