Ruby on rails Bundler Capistrano问题:Rails如何知道我的宝石在哪里?

Ruby on rails Bundler Capistrano问题:Rails如何知道我的宝石在哪里?,ruby-on-rails,rubygems,capistrano,bundler,Ruby On Rails,Rubygems,Capistrano,Bundler,我使用的是标准bundler/capistrano配方,它在部署后在服务器上安装所有必要的gem:update\u code 工作就像一种魅力,大大简化了我的生活 我正在使用Rails 2.3.10和“修补”boot.rb,并根据需要创建了预初始化器 我的问题是,Rails如何知道我的gems驻留在shared/bundle目录中,以及如何知道如何使用它们?该目录是否自动添加到加载路径?这些GEM如何取代系统GEM?您需要的是GEM\u HOME环境变量 jdl,谢谢你提醒我去哪里找。以下是我对

我使用的是标准bundler/capistrano配方,它在部署后在服务器上安装所有必要的gem
:update\u code

工作就像一种魅力,大大简化了我的生活

我正在使用Rails 2.3.10和“修补”boot.rb,并根据需要创建了预初始化器


我的问题是,Rails如何知道我的gems驻留在shared/bundle目录中,以及如何知道如何使用它们?该目录是否自动添加到加载路径?这些GEM如何取代系统GEM?

您需要的是
GEM\u HOME
环境变量


jdl,谢谢你提醒我去哪里找。以下是我对所发生事情的理解

Bundler自动将gems安装到shared/bundle中,如使用Gemfile中的
bundle\u dir
指定的,默认为:

# (line 39 bundler/deployment.rb)
set :bundle_dir, File.join(fetch(:shared_path), 'bundle')
:共享路径
来自capistrano

这就是安装gems的第一步。现在,据我所知,当您指定要安装gems的目录时,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进行设置

bundler.rb
中的
configure\u gem\u home\u和\u path
方法设置
ENV['gem\u home']
,它基于一些设置,通过复杂的过程,最终从.BUNDLE/config中获得
BUNDLE\u path


哇…

但我的问题是。。。GEM_HOME如何指向我的共享/捆绑目录,我从来没有明确设置过这个目录。我假设Bundler有点神奇,但我不知道在哪里。对不起,我没有更多的时间。查看bundler gem中的
bundler.rb
。您应该在那里找到一些修改
GEM\u HOME
GEM\u路径的内容。追踪代码,我敢打赌你会发现它在哪里抓住了你所指的宝石。请看我下面的帖子,我想我得到了答案。我想这个答案与capistrano无关,而是与bundler的一般用法有关