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.202 在 github 上创建项目
创建项目,添加 desc
# 到目录
cd /Users/feizheng/github/rails_badgeable
# 让 Engine 具备独立的命名空间和可挂载能力,避免与主应用冲突。
rails plugin new . --mountable项目结构如下

03 添加 gitignore 文件
过滤掉一些不适合添加到 git 的文件
/.idea
/*.gem04 添加 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