使用 packs-rails 进行 Ruby 应用模块化

使用 packs-rails 进行 Ruby 应用模块化

packs-railspacks-rails establishes and implements a set of conventions for splitting up large monoliths.项目地址:https://gitcode.com/gh_mirrors/pa/packs-rails

项目介绍

packs-rails 是一个用于帮助模块化 Ruby on Rails 应用的开源项目。它建立在 packwerk 标准之上,提供了一套约定和工具,使得大型单体应用的拆分变得更加容易。通过 packs-rails,开发者可以轻松地将应用划分为多个独立的包(packs),每个包可以包含自己的模型、服务、控制器等,从而实现更好的代码组织和模块化。

项目快速启动

1. 安装 packs-rails

首先,在你的 Rails 项目的 Gemfile 中添加 packs-rails

gem 'packs-rails'

然后运行以下命令来安装 gem:

bundle install

2. 创建 packs 文件夹

在项目根目录下创建一个 packs 文件夹,并在其中创建你的第一个包。例如,创建一个名为 my_domain 的包:

mkdir -p packs/my_domain

3. 配置包

packs/my_domain 文件夹中创建一个 package.yml 文件,定义包的配置:

# packs/my_domain/package.yml
enforce_privacy: true
enforce_dependencies: true

4. 添加代码

packs/my_domain 文件夹中添加你的代码。例如,创建一个模型:

# packs/my_domain/app/models/my_domain/my_private_namespaced_model.rb
module MyDomain
  class MyPrivateNamespacedModel < ApplicationRecord
    # 你的模型代码
  end
end

5. 使用包

packs-rails 会自动将新包的 autoload 路径添加到 Rails 中,因此你可以立即在应用中使用这个包中的代码。例如,在控制器中使用:

# app/controllers/some_controller.rb
class SomeController < ApplicationController
  def index
    @model = MyDomain::MyPrivateNamespacedModel.new
  end
end

应用案例和最佳实践

1. 模块化大型单体应用

packs-rails 特别适合用于模块化大型单体应用。通过将应用拆分为多个独立的包,可以更好地管理代码,减少代码耦合,提高代码的可维护性和可扩展性。

2. 公共 API 和私有代码分离

在包中,你可以将公共 API 和私有代码分离。公共 API 可以放在 public/ 目录下,而私有代码可以放在 app/ 目录下。这样可以确保只有必要的代码对外暴露,提高代码的安全性和稳定性。

3. 使用 package_todo.yml 管理依赖

每个包可以有一个 package_todo.yml 文件,用于管理包之间的依赖关系。通过这个文件,你可以明确哪些依赖是允许的,哪些是禁止的,从而更好地控制包之间的耦合。

典型生态项目

1. packwerk

packwerkpacks-rails 的基础,它提供了一套用于定义和检查包之间依赖关系的工具。通过 packwerk,你可以确保包之间的依赖关系符合预期,避免不必要的耦合。

2. FactoryBot

packs-railsFactoryBot 集成良好。你可以在包中定义工厂,packs-rails 会自动将这些工厂加载到 FactoryBot 中,从而方便你在测试中使用。

3. Sorbet

Sorbet 是一个静态类型检查工具,packs-rails 支持与 Sorbet 集成。你可以在包中使用 Sorbet 来增强代码的类型安全性。

通过这些生态项目,packs-rails 提供了一个完整的工具链,帮助你更好地模块化和维护 Ruby on Rails 应用。

packs-railspacks-rails establishes and implements a set of conventions for splitting up large monoliths.项目地址:https://gitcode.com/gh_mirrors/pa/packs-rails

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏真权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值