SuperAPI AI 工具集

spree-extensions

通用与其它

查看项目

更新于 10-15 23:57

技能介绍

用途:指导在 Spree 6 中安装或构建扩展(gem),并说明扩展结构与注册方式。命令使用 spree CLI 形式(Rails 应用位于 server/);经典 Rails 应用则在应用根目录使用 bundle … / bin/rails …。

扩展的两部分:gem(Rails engine,名为 spree_<name>)承载模型、迁移、Store/Admin API 端点、序列化器、权限范围、工作流钩子、订阅者、provider 类与集成;Dashboard 插件(可选,使用 defineDashboardPlugin 的 npm 包)承载管理界面、导航项与商品页组件。Spree 6 没有 Rails admin 和 Rails storefront,因此无需添加视图。仅在需要跨应用共享或发布时才封装为 gem;单应用可把代码放在 server/app/ 并在 server/config/initializers/spree.rb 注册。

安装扩展 gem:spree bundle add spree_reviews;spree generate spree_reviews:install;spree migrate;spree restart。使用预构建镜像的 create-spree-app 项目需先运行 spree eject。安装生成器通常复制迁移并可能添加初始化文件;带 Dashboard 插件的还需 pnpm add @scope/plugin。

版本注意:spree_adyen、spree_paypal_checkout 默认注释,启用前需确认 Spree 6 兼容版本;Spree 4/5 时代的社区 gem 多数需要移植。多店铺共享需使用 spree_multi_store 扩展。

构建扩展:gem install spree_extension -v '>= 2.0',再执行 spree-extension create reviews。脚手架包含 engine.rb、config/initializers/spree.rb、config/routes.rb 及安装生成器。约定包括 Spree.base_class、无外键约束、store 作用域、前缀 ID、用事件代替回调。

API:Store 控制器继承 Spree::Api::V3::Store::ResourceController,Admin 控制器继承 Spree::Api::V3::Admin::ResourceController 并声明 scoped_resource 与 resource_permitted_attributes;路由通过 Spree::Core::Engine.add_routes 定义。

注册时机很关键:payment_methods、fulfillment_providers、integrations 等需放在 Rails.application.config.after_initialize;subscribers、delivery_rate_providers 等可用 after_initialize;hooks、permissions、search_provider 放在初始化文件顶层;涉及模型的注册放在 config.to_prepare。注意 additional_permitted_attributes 必须用 +=。

测试:bundle exec rake test_app 生成 spec/dummy,再运行 bundle exec rspec。限制与常见问题:注册阶段错误会导致功能静默缺失;Admin 控制器缺少 scoped_resource 会报错;迁移不会自动应用,升级后需重跑安装生成器再 spree migrate;不要重命名复制来的迁移;凭据应放在 Spree::Integration;同一方法的多个 decorator 后加载者生效。详细文档见官方文档路径。