学习ruby的使用清单

101 阅读4分钟

为了发送邮件

这里没有使用gem,因为它已经默认在Rails里面了。

然而,花点时间了解Action Mailer的工作原理是很重要的,因为发送邮件是许多Rails应用程序的重要组成部分。

仅仅是认证就需要电子邮件来正常工作。

旧的资产(CSS、JS...)管道

gem "sprockets-rails"

这是Rails的旧资产管道。它没有被使用,但出于向后兼容的原因被保留下来。

关系型数据库

gem "pg", "~> 1.1"

Postgre是Ruby-on-Rails世界中最常用的、可用于生产的关系型数据库,所以我们在这里保持简单。

网络服务器

gem "puma", "~> 5.0"

Puma是Rails的默认Web服务器。

Windows兼容性

gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ]

我们对这个默认的宝石了解不多,但没有它,Rails就不能在Windows平台上工作。

现代前端资产管理

gem 'vite_rails'

ViteJS是一个完整的Ruby-on-Rails前端资产管理。自Rails 5.1以来,前端资产管理非常不稳定,所以我们的想法是使用在业界已经很稳定的东西,而只是保留Sprokets作为向后兼容。

认证

gem "rodauth-rails", "~> 1.0"

Rodauth是Rails的一个优雅的认证工具。是的,我们知道Devise、Clearance、Sorcery等。但Rodauth要好得多,至少有两个原因。

  • 非常简约的安装
  • 基于Ruby,所以不会侵入Rails层内部
  • 如果需要,非常容易扩展
  • 创作者提供了很好的支持

本地存根电子邮件

gem 'letter_opener', group: :development

Letter Opener允许开发者在浏览器中自动查看任何已发送的邮件(邮件并没有实际发送)。

后台工作

gem "sidekiq"

后台工作在Rails应用程序中几乎是强制性的,仅仅是认证,你需要电子邮件确认,密码恢复等,这些都是通过电子邮件处理的。

强烈建议使用.deliver_later 方法来发送邮件。在生产中,只有像Sidekiq或DelayedJobs这样的特定作业运行器才能妥善处理。

内存中的键值数据库

gem "redis"

Redis是一个键值数据库。它在Rails应用程序中有许多用途。到目前为止,只有Sidekiq需要它,但在不久的将来,Redis将为其他功能服务。

漂亮的调试

gem "awesome_print"

令人敬畏的打印允许更好地进行调试。在任何地方写入ap @my_variable ,一旦达到,就会在控制台中漂亮地打印出来。

监控Rails DB

gem "rails_db", ">= 2.3.1"

直接在浏览器中调试应用,可以说是非常方便的。

在本地读取环境变量

gem 'dotenv-rails', groups: [:development, :test]

环境变量是不应该在版本库中硬编码的变量,因为它们可能随时都会改变。想想秘密密码或URL。

这个宝石允许开发者在开发和测试模式下使用它们。

# inside .env, at the root of the Rails project
MY_KEY=MY_VALUE
MY_EMAIL=foo@bar.com

你把它们写在一个".env "文件里,然后你可以通过ENV['MY_KEY']访问它们。

读取Markdown

gem 'redcarpet'

Rails无法读取Markdown,除非你使用一个合适的gem。一旦加载了,你可以通过以下方式访问它Redcarpet::Markdown

系统测试

gem 'cypress-rails', groups: [:development, :test]

Rails默认可以进行系统测试,但安装非常繁琐,而且一旦启动就不稳定。

相反,Cypress是业界的一个著名标准。成熟、稳定,而且非常容易使用。

测试时存根外部请求

gem 'webmock', groups: [:test]

我们认为Webmock的强制性有一个原因:避免测试套件到达任何真实的URL。

你可能会被禁止访问真实的网站,而且你可能会轻易地减慢你的测试套件。

一句话就能确保没有真实的URL被访问。

WebMock.disable_net_connect!(allow_localhost: true)

代码摘录应该是很清楚的:)

测试覆盖率

gem 'simplecov', require: false, group: :test

Simplecov将只覆盖Ruby行(没有JavaScript)。Jest + Istanbul保证了JavaScript的覆盖。

授权

gem "action_policy"

例如,客户不允许访问管理仪表板。不允许访问者访问他们的个人资料。action_policy 是著名的pundit gem的高级版本。

允许Gzip

gem 'heroku-deflater', :group => :production

Gzip会压缩JS和CSS文件。在heroku上,这要感谢'heroku-deflater'宝石,然而,如果你不使用Heroku,你可以简单地从Gemfile中删除这个宝石。