为何指定production组后bundle install仍安装pg gem?
本地环境安装production组pg gem的原因分析
未排除production组执行安装:Bundler默认不会自动跳过production组,若未通过以下方式明确排除,会安装所有组的gem:
- 安装时添加参数:
bundle install --without production - 配置环境变量
BUNDLE_WITHOUT=production - 在
.bundle/config中写入BUNDLE_WITHOUT: production
你未做上述配置的话,pg会被作为production组的gem正常安装。
- 安装时添加参数:
Gemfile.lock会记录所有组的依赖:不管是否安装某组的gem,Gemfile.lock都会记录所有组内gem的版本及依赖关系,这是为了保证不同环境依赖版本一致。如果通过
bundle list能查到pg,说明确实被安装了,核心原因还是未排除production组。存在间接依赖:检查非production组的gem是否有依赖pg的情况。部分gem可能底层依赖pg,即便你未显式声明,也会被自动安装。可执行
bundle why pg命令,查看具体是哪个gem触发了pg的安装。
内容的提问来源于stack exchange,提问作者Noriaki Takamizawa
相关产品推荐
相关产品推荐

