Rails 中 Gemfile 有什么用?

2023-12-29

有什么用Gemfile在铁轨上?

如何使用Gemfile?


在 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 可以使您的应用程序正常运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 中 Gemfile 有什么用? 的相关文章

随机推荐

  • 正则表达式的意外匹配

    我期望正则表达式模式ab 2 c仅匹配a后跟 0 1 或 2bs 随后是c 许多语言都以这种方式工作 例如 Python 然而 在 R 中 grepl ab 2 c c ac abc abbc abbbc abbbbc 1 TRUE TRU
  • 使用数据注释将字段标记为“只读”

    我正在努力使ID字段只读 它是数据库中的一个身份字段 因此用户不会设置它 不过 他们还是愿意看到 当分配给一个时 我缺少什么如下DataForm仍然允许编辑该值 public class StatusChoice BindableBase
  • 使用 Selenium 保存整页内容

    我想知道保存 Selenium 访问站点时检索到的所有文件的最佳方法是什么 换句话说 当 Selenium 访问时http www google com http www google com我想保存 HTML JavaScript 包括
  • 如何在windows中通过命令提示符方式设置文件权限?

    如何通过命令提示符方式在windows中设置相同的文件权限 gt attrib Displays or changes file attributes ATTRIB R R A A S S H H drive path filename S
  • 处理器架构不匹配构建错误

    在尝试运行测试应用程序时 我收到以下错误两次 正在构建的项目 MSIL 的处理器架构与参考 C Windows Microsoft NET Framework v4 0 30319 mscorlib dll x86 的处理器架构之间存在不匹
  • 如何在 google-app-engine 中使用内置的 django templatetags

    我正在尝试在内置模板标签中使用 Django 例如标记和 在我的谷歌应用程序中人性化 但它不起作用 我在 INSTALLED APPS 中添加了标记和人性化 还是行不通 如何使用它 这是人性化的方法 其他应该类似 在调用模板的控制器末尾有一
  • 从 iOS 设备上传图像到服务器

    我正在尝试在远程服务器上上传图像 如果我从谷歌下载手机上的图像并上传它们 例如http www mangauk com gallery albums album 11 lg scooby jpeg http www mangauk com
  • 在 PHP 中实现 secp256k1 (ECDSA)(针对比特币)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 对于热心的反对者和 或结束者 如果您认为这对 SO 来说是题外话 请向我指出其他 StackExchange 网站 在该网站上这个问题会更
  • 为什么矩阵和 data.frame 之间的“越界”索引不同?

    我确信这是基本的 但我只是想really在这里了解R数据结构的逻辑 如果我按超出范围的索引对矩阵进行子集化 则会得到该错误 m lt matrix data c foo bar nrow 1 m 2 Error in m 2 subscri
  • 使用 php 清除 CMD-shell

    我有这个简单的 php 脚本 它每秒输出一个字符串
  • 如何删除包过滤器?

    如何禁用包过滤器 我不断收到此消息 Ignoring unknown package filter build tools 23 0 0 rc2 Warning The package filter removed all packages
  • 如何在 C# 中更改 XML 文件的属性值?

    我有一个 XML 文件 web config 我需要编辑每个标签的 value 属性 具体取决于键名称 这是 XML 文件的示例
  • 使用 xPath 循环遍历项目

    我正在尝试循环遍历 xml 文档 但我仍然在第二次迭代中获取第一个元素 不确定我缺少什么 有人可以帮忙吗 Xpath 非常新 string file HttpContext Current Server MapPath XML Locati
  • 是否需要break语句或者return语句就足够了?

    在我的 Python 3 5 脚本中 我有一个简单的for循环 看起来像这样 request simple string ignore Tuple that contains regex s to ignore for i regex in
  • 如何访问 Heroku 中的 docker 容器?

    我已按照此处构建图像的说明进行操作 https devcenter heroku com articles container registry and runtime getting started https devcenter her
  • 在 Shiny 中按日期过滤

    作为一个可怜的闪亮家伙 无法解决简单的任务 我在数据框中有一行带有日期的行 crime date lt strptime incidents REPORT DAT format Y m d 我的日期输出如下所示 1 2017 04 07 E
  • 在 Flask 中渲染 Jupyter Notebook Iframe

    我正在使用 Flask 为单个用户托管 UI 我一直在尝试做的事情是设置一种方法 让用户单击一个按钮 使用标记语言在文档中预先指定的位置插入一些文本和图像 我最初使用 Jinja2 来实现此目的 但问题是用户需要能够在插入数据后修改文档 以
  • 标签(或“标记”)接口是否已过时?

    我正在尝试帮助一位同事接受 OO 并且我发现在某些情况下 很难找到标签概念的可靠的现实示例 或marker 界面 不包含任何方法的接口 它仅用作标记或标记或标签 虽然对于我们的讨论来说这确实不重要 但我们使用 PHP 作为讨论背后的平台 因
  • ServiceStack支持二进制响应吗?

    ServiceStack服务中是否有任何机制可以返回流 大型二进制数据 WCF 的 MTOM 支持虽然笨拙 但可以有效地返回大量数据 而无需文本转换开销 我喜欢服务堆栈 这个小代码足以从内存流返回 Excel 报告 public class
  • Rails 中 Gemfile 有什么用?

    有什么用Gemfile在铁轨上 如何使用Gemfile 在 Rails 开发过程中 有时您会想要提供一些您需要的功能 但要么您不知道如何做 要么您不想自己实现它 因为有很多才华横溢的开发人员已为其开发投入了工作 您可能需要的这些开发 用户身