mcpField
S
seed-database

seed-database

github.com/igmarin数据与数据库2839 次安装4 周前更新
代码仓库

关于 seed-database

面向 Rails 开发的种子数据与测试场景管理技能,涵盖可重复执行的种子、按环境隔离数据、FactoryBot、凭据安全和验证步骤。

主要功能

  1. 01使用 find_or_create_by! 编写可重复种子
  2. 02按环境限定非生产数据
  3. 03使用 FactoryBot 设置测试场景
  4. 04避免硬编码凭据
  5. 05用 Rails 命令验证种子数据

适用场景

  1. 01为 Rails 应用添加静态参考记录
  2. 02用工厂设置测试数据
  3. 03创建不影响生产环境的开发数据
  4. 04确认重复运行种子不会产生重复记录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/igmarin/rails-agent-skills --skill seed-database

安装后在 Claude Code 中输入/seed-database确认已加载。

附带文件EXAMPLES.mdreferences/workflow.md

详细介绍

种子数据库

有效管理开发和测试数据。

快速参考

用途解决方案
静态参考数据使用 find_or_create_by! 的 db/seeds.rb
测试场景spec/factories/ 中的 FactoryBot
复杂关系两者结合使用

HARD-GATE

NEVER commit production data to seeds
ALWAYS use factories for test-specific scenarios
ALWAYS make seeds idempotent (can run multiple times safely)
NEVER hardcode credentials (passwords, API keys, secrets) in seeds, factories, or examples
  - Use ENV variables (e.g., ENV.fetch('DEFAULT_SEED_PASSWORD')) or SecureRandom.hex(16) for non-production data
  - Use `rails credentials:edit` to manage production secrets, never commit them in code

核心流程

  1. 编写幂等种子 — 使用 find_or_create_by!,确保重复运行安全无虞。
  2. 按环境限定范围 — 使用 Rails.env 检查保护非生产数据。
  3. 运行种子 — 执行 rails db:seed(或使用 rails db:setup 创建全新数据库)。
  4. 验证幂等性 — 再次运行 rails db:seed,确认没有重复数据或错误。
  5. 验证数据 — 打开 rails console,抽查预期记录是否存在且属性正确。

最简内联示例

一个可直接复制粘贴的 db/seeds.rb,涵盖幂等性、环境限定范围和安全凭据:

# db/seeds.rb

# Static reference data — safe to run repeatedly
Role.find_or_create_by!(name: 'admin') do |r|
  r.description = 'Full system access'
end

Role.find_or_create_by!(name: 'member') do |r|
  r.description = 'Standard user access'
end

# Development-only seed data — never runs in production
if Rails.env.development?
  User.find_or_create_by!(email: '[email protected]') do |u|
    u.role       = Role.find_by!(name: 'admin')
    u.password   = ENV.fetch('DEFAULT_SEED_PASSWORD', SecureRandom.hex(16))
  end
end

关于 FactoryBot 工厂定义和更复杂的关系模式,请参阅 EXAMPLES.md。

扩展资源(渐进式披露)

仅在需要其特定内容时才加载这些文件:

  • EXAMPLES.md — 当你需要包含环境特定模式和 FactoryBot 工厂定义的完整种子示例时使用
  • references/workflow.md — 在实现复杂种子工作流或依赖迁移的种子数据时使用

输出风格

  1. 使用符合 Rails 惯例的种子模式。
  2. 清晰地组织工厂结构。
  3. 无条件遵守 HARD-GATE 中的凭据和幂等性规则。
  4. 包含验证命令:rails db:seed、第二次幂等性运行以及 rails console 抽查。
  5. 语言 — 除非明确要求其他语言,否则必须使用英语。

集成

技能何时串联
write-tests设置测试场景时
review-migration确保数据库 schema 对齐时

评论

支持 Markdown