jdl, спасибо за советы, где искать.Вот мое понимание того, что происходит.
Bundler автоматически устанавливает гем в shared / bundle, как указано с помощью bundle_dir
из Gemfile, по умолчанию это:
# (line 39 bundler/deployment.rb)
set :bundle_dir, File.join(fetch(:shared_path), 'bundle')
:shared_path
происходит от Capistrano
Так что это первый шаг установки драгоценных камней.Теперь, насколько я понимаю, когда вы указываете каталог для установки гемов, Bundler всегда изменяет .bundle/config
в корневом каталоге (т. Е. Там, где находится Gemfile
).Вот как выглядит мой пакет после установки пакета в общий каталог:
---
BUNDLE_DISABLE_SHARED_GEMS: "1"
BUNDLE_WITHOUT: development:test
BUNDLE_FROZEN: "1"
BUNDLE_PATH: /mnt/apps/my_app/shared/bundle
Затем (как указано в jdl) GEM_HOME устанавливается на основе этого .bundle / config.
Метод configure_gem_home_and_path
в bundler.rb
устанавливает ENV['GEM_HOME']
, и он основан на некоторых настройках, которые через запутанный процесс в конечном итоге получают BUNDLE_PATH
из вашего .bundle / config.
whew...