SuperAPI AI 工具集

loom-elixir

编程与开发

查看项目

更新于 10-18 22:15

技能介绍

该技能定位为 Elixir 语言专长,面向已在 BEAM 上开发、追求习惯用法与生产级质量的开发者。它假定使用者具备基础能力,价值在于指出容易出错之处,并给出可操作的工具命令、代码示例与测试约定。

一、用途与定位 技能围绕 Elixir 生态的关键环节组织内容:mix、模式匹配、进程与 OTP、Phoenix、Ecto、ExUnit,以及 Loom 测试运行适配器。整体语气面向生产环境,强调正确性、可维护性与可测试性。

二、主要能力

  1. 工具链与质量门禁:介绍 mix 的新建项目、依赖增删与更新、锁定文件清理、漏洞审计、严格编译、重编译链排查、格式化、Credo、Dialyzer、Sobelow 等命令,并给出一组 CI 门禁命令组合。
  2. 模式匹配与控制流:说明 = 匹配、^ 固定值、多函数子句与守卫、带标签元组返回、with 表达式与 else 分支的完整覆盖要求、map 与 struct 模式、二进制模式解析协议头等,并强调原子不被回收、原子表默认上限 1,048,576,禁止对外部输入调用 String.to_atom/1 或 :erlang.binary_to_term/1。
  3. 进程与 OTP:讲解进程共享无状态、消息复制、超 64 字节二进制引用计数;GenServer 状态单进程导致的串行化瓶颈,建议读多共享状态用 ETS 或 :persistent_term;handle_continue/2 做慢初始化;call 默认 5 秒超时、cast 无背压;handle_info/2 需兜底子句;terminate/2 仅在捕获退出时运行;链接与监控的区别;通过 Registry 命名动态进程。监督策略、重启强度、动态监督者、Task.async_stream 与 async_nolink 等也有说明。
  4. Phoenix 要点:上下文拥有 schema 与 Repo 调用;Plug 的 conn 不可变且需 halt/1;LiveView mount/3 执行两次,需用 connected?/1 判断后再订阅 PubSub 或开定时器,大集合用 stream/3,慢加载用 assign_async/3 或 start_async/3;验证路由编译期检查;config/runtime.exs 读取运行时密钥;HEEx 转义与 raw/1 风险、CSRF 与安全头保留。
  5. Ecto 要点:changeset 的 cast 字段列表即批量赋值白名单;unique_constraint/2 依赖唯一索引;无懒加载,未预加载关联为 NotLoaded,需查询内预加载或 Repo.preload/2,避免循环内预加载造成 N+1;^ 绑定参数防注入;事务与 Ecto.Multi;insert_all/3 与 update_all/3 跳过 changeset 校验与时间戳;并发建索引需禁用 DDL 事务与迁移锁。
  6. 后台任务与发布:Oban 任务与业务数据同事务插入;perform/1 返回值的重试语义;任务参数经 JSON 往返后为字符串键,应传 id;worker 必须幂等,可用 unique 去重;测试用 Oban.Testing 与 testing: :manual;release 构建后无 mix,需通过 release 模块执行迁移。
  7. 测试:ExUnit 的 async、setup/setup_all、on_exit、:tmp_dir 标签、start_supervised!/1、assert_receive 替代 sleep、doctest、Mox 仅模拟 behaviour、Ecto Sandbox 事务隔离与 allow/3、常用 mix test 参数。
  8. Loom 测试适配器:适配器为 mix-test,适用于含 mix.exs 的包;单测命令为 mix test {file} --only 'test:{test}';test 字段须为含 test 前缀、describe 文本与测试描述的完整名称,精确匹配,且测试描述中不能含单引号;无匹配时判为 NotSelected 并使冻结失败;契约测试放在 test/**/*_test.exs;被 test_helper.exs 排除的测试在 --only 下仍会运行;编译失败视为红;test-impact 无法按文件选择 ExUnit 测试,完整套件在集成验证中运行。

三、使用方式 资料以技能说明与示例形式呈现,给出可直接采用的命令、代码片段、测试样例与契约 YAML 示例,帮助开发者在日常开发与 CI 中落实上述实践。未提供安装方式与运行环境的进一步说明。

四、适用场景 适合 Elixir/Phoenix 项目的日常开发、代码评审、CI 门禁配置、OTP 进程设计、Ecto 查询与迁移、Oban 后台任务、ExUnit 测试编写,以及在 Loom 中编写契约测试。

五、限制 资料未提供该技能的收费、价格、平台支持范围、性能数据与具体安装步骤,这些事实暂未提供。