从第二次捆绑安装执行以来,只要Gemfile没有改变,从Gemfile.lock加载依赖关系.
但是我想知道如何检测这两个文件之间的变化.
例如,如果我直接在Gemfile.lock中添加一个新的依赖关系,而不将其添加到Gemfile中(与Gemfile.lock从Gemfile自动生成的最佳做法相反),bundle安装是否会将Gemfile改为?
事实上,捆绑安装过程是否比较了整个Gemfile和Gemfile.lock树以检测更改?
如果是,即使我直接向Gemfile.lock添加依赖关系,Gemfile将被检测为已更改(因为不同),并将重新擦除Gemfile.lock(从而丢失添加的依赖关系…)
从第二次发布以来,捆绑安装的过程是什么?
更清楚的是,我的问题是:
是否仅基于Gemfile进行更改?这意味着捆绑包将保留每个捆绑包的Gemfile快照安装执行数N,并将其与捆绑安装执行N 1进行比较.
或者在bundler内存中不创建快照,并且bundler与Gemfile.lock进行比较,以便每次检测Gemfile是否必须被视为已更改.
解决方法
如果您编辑Gemfile.lock,则Rails应用程序将依赖于另一个版本的宝石…在这种情况下,您的gem版本系统的完整性将被破坏.直接编辑Gemfile.lock文件是一个非常糟糕的主意.
请,成为一个好人,只与Gemfile交易