gpt4 book ai didi

ruby-on-rails - 除了模型、 View 、 Controller 和 Assets 之外,Rails 应用程序的应用程序文件夹中可以有哪些类型的文件夹?

转载 作者:行者123 更新时间:2023-12-03 16:01:47 25 4
gpt4 key购买 nike

在一个普通的 Rails 应用程序中,在 app 文件夹下,我们有: Assets 、模型、 View 、 Controller 等。应该为最佳实践创建哪些其他文件夹?

我在地方和项目中阅读,它们创建工作、序列化器、服务、验证器、 channel 。那里有什么?另外,lib 目录中有什么样的代码?

最佳答案

我想根据经验和研究在这里发布答案。请注意,这些不是惯例或必须做的事情。我一直以这种方式使用它们(其中一些)。由于每个人的详细解释都需要针对每个人提出不同的问题。我会在这里引用链接:

序列化器:我用它来序列化数据。在 Rails 中,当将数据呈现为 JSON 时,我们有这个漂亮的 Active Model Serializer
图书馆。

工作:我用它来实现工作。可以使用不同的排队后端(如 Sidekiq)将作业排入队列并执行, Resque , Delayed Jobs . Active Job Basics是一个很好的文档。

邮件程序:我使用它来实现邮件程序,即我的应用程序的邮件结构。这是 Action Mailer Basics 的官方文档.

channel :我将它用于 websockets 的实时功能。我们可以使用 Action 电缆库来实现实时功能,如帖子、聊天。 Action Cable已添加到 Rails 核心中,可用作 Faye 等 gem 的替代品.

规则:我在需要规则引擎实现的应用程序中使用它。以下是一些在 ruby​​ 中提供规则引擎的 gem:Wongi , Ruleby , Rules Engine , Rools

服务:这些可用于执行应用程序内部的复杂操作。在模块化的 Rails 应用程序中,我们可以通过查看服务文件夹来告诉应用程序的核心。它们提供解耦、可见性、清洁 Controller /模型、随处可访问且易于测试。当操作复杂或跨多个模型或与外部服务交互时,可以使用它们。如果服务变得复杂,我们可以将其分解为其他服务。例如:GenerateReport、PublishWeekly、PayInvoice、RegisterUserWithGoogle。以下是阅读内容:Blog1 , Blog2 , Blog3 , Blog4 .

查询:数据库查询可以到这里。这些可以在整个应用程序的不同位置使用,同时隐藏查询逻辑。它也适用于单元测试。

表单:这些处理应用程序中的表单。它们主要用于从 Rails 模型中提取验证。它只是一个简单的 Ruby 类,其中包含 ActiveModel::Model .我们可以使用reform gem来实现这一点。以下是更多详细信息:ActiveModel Form Objects

装饰器:这些可用于替换助手。见 Draper gem .

验证器:自定义验证器可以放在这里,即模型的不同属性,比如用户中的电子邮件。这是一个示例 Custom Validators .

响应者:这是我们发送回服务器以响应请求的内容。阅读更多:Responders .还有responder gem其中包括一组要干涸的响应者模块。许多程序员也把它放在 lib/responders 下而不是 app/responders 下。

关注点:它们用于提取常见和/或特定于上下文的代码块,以清理模型并避免它们变得过于臃肿和困惑。见这里:ActiveSupport::Concern .

上传器:它们用于存储与某些 gem 相关的文件上传器配置:Shrine .

请注意,这不一定是惯例。结构完全取决于您和您的 Rails 应用程序。一些项目可能包括更多的子目录,如政策、支持、行动等,以获得更多 DRYness 和 SRP (单一职责原则)。

引用:

http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/

https://www.toptal.com/ruby-on-rails/decoupling-rails-components

对于 lib,请参阅以下链接:

https://devblast.com/b/rails-app-vs-lib

https://gist.github.com/maxim/6503591

http://blog.codeclimate.com/blog/2012/02/07/what-code-goes-in-the-lib-directory/

这是基于我的经验、研究、知识和观点,而不是任何官方指南的事实或惯例。

关于ruby-on-rails - 除了模型、 View 、 Controller 和 Assets 之外,Rails 应用程序的应用程序文件夹中可以有哪些类型的文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41648601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com