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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Bundler Capistrano问题:Rails如何知道我的宝石在哪里?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用标准的bundler / capistrano配方,它在部署后在服务器上安装所有必需的宝石:update_code

像魅力一样工作,显着简化了我的生活.

我正在使用Rails 2.3.10并“修补”boot.rb并根据需要创建了preinitializer.

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

解决方法

jdl,感谢您前往哪里寻找.这是我对发生的事情的理解.

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

# (line 39 bundler/deployment.rb)
set :bundle_dir,File.join(fetch(:shared_path),'bundle')

:shared_pa​​th来自capistrano

这就是安装宝石的第一步.现在,据我所知,当你指定一个目录来安装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_gem_home_and_path方法设置ENV [‘GEM_HOME’],它基于一些设置,通过一个复杂的进程最终从.bundle / config获取BUNDLE_PATH.

呼…

猜你在找的Ruby相关文章