gpt4 book ai didi

ruby-on-rails - Bundler Capistrano 问题 : How does Rails know where my gems are?

转载 作者:行者123 更新时间:2023-12-04 06:47:48 25 4
gpt4 key购买 nike

我正在使用标准的 bundler/capistrano 配方在服务器上安装所有必要的 gem after deploy:update_code
像魅力一样工作,大大简化了我的生活。

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

我的问题是,Rails 如何知道我的 gems 位于 shared/bundle 目录中,它如何知道使用这些?这个目录是否以某种方式自动添加到加载路径中?这些 gem 如何优先于系统 gem ?

最佳答案

jdl,感谢您指出在哪里看。这是我对发生的事情的理解。

Bundler 自动将 gem 安装到共享/bundle 中,如使用 bundle_dir 指定的那样从 Gemfile 中,它默认为:

# (line 39 bundler/deployment.rb)
set :bundle_dir, File.join(fetch(:shared_path), 'bundle')
:shared_path来自卡皮斯特拉诺

所以这是安装 gem 的第一步。现在,据我所知,当你指定一个目录来安装 gems 时,Bundler 总是修改 .bundle/config在根目录中(即 Gemfile 所在的位置)。这是我在将 bundle install 安装到共享目录后的样子:
--- 
BUNDLE_DISABLE_SHARED_GEMS: "1"
BUNDLE_WITHOUT: development:test
BUNDLE_FROZEN: "1"
BUNDLE_PATH: /mnt/apps/my_app/shared/bundle

然后,(如 jdl 所指出的)根据此 .bundle/config 设置 GEM_HOME。

方法 configure_gem_home_and_pathbundler.rbENV['GEM_HOME']它基于一些设置,通过复杂的过程最终得到 BUNDLE_PATH来自您的 .bundle/config。

呼...

关于ruby-on-rails - Bundler Capistrano 问题 : How does Rails know where my gems are?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com