rails: 创建 plugin/gem,各项目复用(rails_badgeable)

一个 rails plugin 的创建过程

01 确认 rails 已经安装

环境确认

$ ruby -v
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin24]

$ rails -v
Rails 8.1.2

02 在 github 上创建项目

创建项目,添加 desc

# 到目录
cd /Users/feizheng/github/rails_badgeable

# 让 Engine 具备独立的命名空间和可挂载能力,避免与主应用冲突。 
rails plugin new . --mountable

项目结构如下

03 添加 gitignore 文件

过滤掉一些不适合添加到 git 的文件

/.idea
/*.gem

04 添加 release-it.json 配置

添加配置文件 .release-it.json

{
  "git": {
    "requireCleanWorkingDir": false
  },
  "hooks": {
    "after:init": ["t2k", "npm run clean"],
    "after:bump": [
      "syncv -p lib/rails_statusable/version.rb",
      "npm run build",
      "npm run pubpush"
    ]
  },
  "github": {
    "release": false,
    "proxy": "http://127.0.0.1:9090",
    "releaseName": "Release ${version}",
    "skipChecks": true,
    "releaseNotes": "git log --no-merges --pretty=format:\"* %s %h\" ${latestTag}...main"
  },
  "npm": {
    "publish": false,
    "skipChecks": true
  }
}

05 将 .github 里的信息先 disabled

防止一些 ci 等触发

06 实现好代码之后,生成 llms.txt

生成 ai 使用的帮助文档,提示词如下:

帮我生成一个 llms.md.txt 用于给 AI 使用,方便别人使用这个 gem https://www.scrollxui.dev/llms.txt 参考这个                                                                                                      

07 发布 gem

直接在根目录下执行

alias nrcip='proxy npm run release -- --ci --npm.skipChecks'

08 其它/测试 dummy app

启动/操作 dummpy APP

# 直接在项目根目录下,执行如下命令
rails s
rails db:migrate
rails gem