具有确切版本的 Gemfile 与 Gemfile.lock
Gemfile with exact versions vs Gemfile.lock
在 Gemfile
中指定第三方库的确切版本与使用 Gemfile.lock
之间有什么区别吗?
如果我在 Gemfile
中使用确切的版本,它是否与分发 Gemfile.lock
相同?
不,完全指定的 Gemfile
和使用 Gemfile.lock
是不一样的。
您的 Gemfile
可能包括您在特定版本中使用的所有 gem。但是 Gemfile.lock
还将包含所有 gem,它们是您使用的 gem 的依赖项。这意味着当 Gemfile
.
时,典型的 Gemfile.lock
将包含更多 gems
此外:您的 Gemfile
的 gem 或 gem 版本可能彼此不兼容。一个 Gemfile.lock
是由 bundler 生成的,代表一组 gem 相互兼容的版本。如果捆绑器无法满足所有必需的依赖项,那么它将不会生成 Gemfile.lock
.
就是说:仅在 Gemfile
中固定由于应用程序的版本要求而需要固定的版本。让 bundler 找到一个有效的组合并将 Gemfile.lock
检查到版本控制系统中。
如果我将 Gemfile.lock 重命名为 Gemfile,bundle install
会因语法错误而失败。
在 Gemfile
中指定第三方库的确切版本与使用 Gemfile.lock
之间有什么区别吗?
如果我在 Gemfile
中使用确切的版本,它是否与分发 Gemfile.lock
相同?
不,完全指定的 Gemfile
和使用 Gemfile.lock
是不一样的。
您的 Gemfile
可能包括您在特定版本中使用的所有 gem。但是 Gemfile.lock
还将包含所有 gem,它们是您使用的 gem 的依赖项。这意味着当 Gemfile
.
Gemfile.lock
将包含更多 gems
此外:您的 Gemfile
的 gem 或 gem 版本可能彼此不兼容。一个 Gemfile.lock
是由 bundler 生成的,代表一组 gem 相互兼容的版本。如果捆绑器无法满足所有必需的依赖项,那么它将不会生成 Gemfile.lock
.
就是说:仅在 Gemfile
中固定由于应用程序的版本要求而需要固定的版本。让 bundler 找到一个有效的组合并将 Gemfile.lock
检查到版本控制系统中。
如果我将 Gemfile.lock 重命名为 Gemfile,bundle install
会因语法错误而失败。