【发布时间】:2013-09-03 12:33:36
【问题描述】:
我是 Ruby on Rails 的初学者,我正在使用 Rails4
Rails 中的 Gemfile 和 Gemfile.lock 有什么区别?
【问题讨论】:
标签: ruby-on-rails gemfile
我是 Ruby on Rails 的初学者,我正在使用 Rails4
Rails 中的 Gemfile 和 Gemfile.lock 有什么区别?
【问题讨论】:
标签: ruby-on-rails gemfile
Gemfile 包含运行 bundle install 后将包含在项目中的 gem。您可以对它们进行分组,并指定它们的来源(从哪里获取它们)和版本/分支。
Gemfile.lock 由bundler 生成,包含所有实际安装的 gem 及其版本的列表,包括所有依赖项。
【讨论】:
Gemfile 存储您要为项目安装的软件包列表,以及在哪里可以找到它们以及要使用哪个版本的可选信息。如果您没有Gemfile.lock,bundler 将使用来自Gemfile 的信息并找到可以安装的包和版本以满足所有依赖关系。
然后生成Gemfile.lock 以存储bundle install 使用的包及其版本(在解决依赖关系之后)。如果有人再次调用bundle install,bundler 会检查Gemfile.lock 是否是最新的,如果是,bundler 会使用Gemfile.lock 中的版本来安装gem。
Gemfile 用于存储您想要使用的所需包,Gemfile.lock 存储与最后一个bundle install 一起使用的所有包名称和版本,它们应该可以在部署或其他开发人员的机器上运行(因为它们是与您在开发中使用的版本相同)。
请参阅文档:http://bundler.io/v1.3/man/bundle-install.1.html 和 http://bundler.io/v1.3/man/bundle-update.1.html。另请查看有关部署的部分。
更新:
也在相关问题中:What is the difference between Gemfile and Gemfile.lock in Ruby on Rails
【讨论】: