SuperAPI AI 工具集

ce-andrew-kane-gem-writer

编程与开发

查看项目

更新于 10-15 21:39

技能介绍

用途:在创建新 Ruby gem、重构现有 gem 或需要遵循 Andrew Kane 风格时使用,参考其 100+ gem、374M+ 下载量的实践模式(如 Searchkick、PgHero、Chartkick 等)。

主要能力与约定:

  • 入口结构:lib/gemname.rb 按固定顺序组织——先 require 标准库依赖,再 require_relative 内部模块与 version,条件加载 Rails(require_relative "gemname/railtie" if defined?(Rails)),最后定义模块、配置与错误类。
  • 类宏 DSL:以单次方法调用配置全部行为,校验未知关键字并抛出 ArgumentError,通过 Module.new 与 define_method 注入方法,用 cattr_reader 保存选项。
  • Rails 集成:始终使用 ActiveSupport.on_load,绝不直接 require Rails 组件;修改行为用 prepend。
  • 配置:用 class << self 配合 attr_accessor,而非 Configuration 对象;默认值立即设置。
  • 错误处理:简单继承层次(Error、ConfigError、ValidationError),尽早用 ArgumentError 校验。
  • 测试:仅用 Minitest,test_helper 中 require bundler/setup、Bundler.require、minitest/autorun。
  • gemspec:尽量零运行时依赖,开发依赖放 Gemfile,不提交 Gemfile.lock。

应避免的反模式:method_missing、Configuration 对象、@@class_variables、直接 require Rails、大量运行时依赖、RSpec、重型 DSL。

参考文件:references/ 下提供模块组织、Rails 集成、数据库适配器、测试模式与资源链接等深入说明。

限制:资料未提供安装命令、收费方式、支持平台或具体版本兼容范围,暂未提供。