在 Rails 开发过程中,有时您会想要提供一些您需要的功能,但要么您不知道如何做,要么您不想自己实现它,因为有很多才华横溢的开发人员已为其开发投入了工作。
您可能需要的这些开发(用户身份验证、消息系统、资产处理程序、地理位置、分页系统、链接到 Amazon AWS 等外部服务,以及最后但并非最不重要的 Rails 本身)称为 Ruby Gems。这些是 ruby 软件包,不一定与 Rails 相关,但由于 Rails 基于 Ruby,因此 98% 的 gem 都可以用于您的 Rails web 应用程序代码。
可以找到很多宝石github http://github.com,但通过搜索宝石更有趣红宝石 http://rubygems.org/ or ruby-工具箱 https://www.ruby-toolbox.com/
Your gemfile
是您想要包含在项目中的所有 gem 的列表。
它与bundler http://gembundler.com/(也是一个 gem)来安装、更新、删除和以其他方式管理您使用过的 gem。
The gemfile
还有另一个目的 - 你可以将宝石分组:development
, :test
, :assets
, :production
等团体和 Rails 将知道何时包含 gem。例如:
group :development, :test do
gem "rspec-rails"
gem "factory_girl_rails"
gem "guard-rspec"
end
请注意,在 Rails 4 上,assets
组已被弃用
这些 gem 属于开发环境和测试环境,因为它们用于测试应用程序。您不需要它们在生产环境中可用(您可以,但这会不必要地增加内存)。
所以 - 要使用gemfile
,只需写下您想要安装的 gem,例如
gem 'devise'
确保安装bundler
事先(在你的控制台/cmd/ssh 中)
$ gem install bundler
然后在控制台写入
bundle install
你会注意到另一个 gemfile 出现了!Gemfile.lock
如果您使用文本阅读器打开该文件,您将看到该文件列出了所有 gem 及其版本和依赖项。当您需要知道安装的 gem 的版本时,这会很有用。
如需更多阅读Gemfile
- 在捆绑器页面上阅读 http://gembundler.com/gemfile.html
有关挑选宝石的信息,您可以从this http://www.railstutors.com/blog/how-to-pick-the-right-ruby-gem
祝好运并玩得开心点!
好的,那么创建的 Gemfile.lock 是什么?
Gemfile.lock,顾名思义,是对已安装的所有 gems 的所有版本的锁定。因此,如果 Gemfile 是需要安装的文件,那么锁定文件就是已安装的文件以及启动和运行应用程序实际需要的版本。
如果您没有该特定版本中的 gem(如 Gemfile.lock 中指定的),rails 会抱怨,您必须安装缺少的 gem(通过bundle install
)或手动修复任何冲突(我相信捆绑程序会给你一些线索)
一些需要了解的事情Gemfile.lock
- 如果你不小心删除了它,运行时它会重新生成
bundle install
。如果你不小心删除了Gemfile
,你运气不好..你应该使用 git :)
- Heroku 不关心 Gemfile.lock,因为它会重新安装所有 gem。所以对于 Heroku,你must设置你想要的gem版本,否则Heroku将始终安装最新版本的gem,这可能会导致问题
- 将 Gemfile.lock 保留在您的项目中,以便您始终知道哪个版本的 gems 可以使您的应用程序正常运行。