#constant #ruby #enforce #sandbox #codebase #boundaries #applications

app constant_sandbox

用于强制边界和模块化Rails应用程序的Ruby代码库工具

1 个不稳定版本

0.1.0 2021年2月16日

#4#boundaries

MIT 许可证

33KB
895 代码行

constant_sandbox

Constant Sandbox是一个用于Ruby代码库的命令行工具,用于强制边界和模块化Rails应用程序。灵感来自packwerk,但无需Rails 6的要求。

Constant Sandbox可以用于

  • 将文件组组合成包
  • 定义包级别的常量可见性(即公开可访问的常量)
  • 在包之间强制隐私(入站)和依赖(出站)边界
  • 帮助现有代码库变得更加模块化,而不妨碍开发

先决条件

您的Ruby代码库不需要依赖项。所使用的解析库支持Ruby 3.0。

安装

目前安装此工具的唯一途径是使用rust的cargo install。我计划很快发布预编译版本并添加homebrew配方。

用法

使用此工具的主要子命令是verify。该命令会在您的代码库中查找box.yml文件,将其视为包的入口点。这些box.yml允许您定义该文件夹导出和导入到代码库其余部分的常量。

要创建您的第一个constant sandbox,init命令可以接受一个文件夹并根据您的当前使用情况生成导入和导出的值。

constant_sandbox init lib/rubrowser/parser

现在,您可以通过输入以下命令来验证创建的box:

constant_sandbox verify

最后一个可用的命令是inspect。此命令评估您的Ruby代码库并将所有与提供的文件夹存在的连接输出到stdout。输出一个覆盖当前使用的box配置。这对于了解代码库的凝聚力非常有用。

示例输出

For more information try --help
../constant_sandbox/target/release/constant_sandbox inspect lib/rubrowser/parser
non exported reference Rubrowser::Parser::Factory found in lib/rubrowser/data.rb on line 26
non imported reference Parser::Builders::Default found in lib/rubrowser/parser/file/builder.rb on line 8
non imported reference Parser::SyntaxError found in lib/rubrowser/parser/file.rb on line 26
non imported reference Parser::Source::Buffer found in lib/rubrowser/parser/file.rb on line 33
non imported reference Encoding::UTF_8 found in lib/rubrowser/parser/file.rb on line 34
non imported reference Parser::CurrentRuby found in lib/rubrowser/parser/file.rb on line 41
non imported reference Parser::AST::Node found in lib/rubrowser/parser/file.rb on line 145
---
imports:
  - "Encoding::UTF_8"
  - "Parser::AST::Node"
  - "Parser::Builders::Default"
  - "Parser::CurrentRuby"
  - "Parser::Source::Buffer"
  - "Parser::SyntaxError"
exports:
  - "Rubrowser::Parser::Factory"

依赖关系

~8MB
~147K SLoC