Module: BaSpree

Defined in:
lib/ba_spree/spree_events_dedup_patch.rb,
lib/ba_spree/engine.rb,
lib/ba_spree/version.rb,
app/models/ba_spree/order_decorator.rb,
app/models/ba_spree/store_decorator.rb,
app/services/ba_spree/setup_service.rb,
app/models/ba_spree/address_decorator.rb,
app/models/ba_spree/product_decorator.rb,
app/models/ba_spree/variant_decorator.rb,
app/models/ba_spree/adjustment_decorator.rb,
app/models/ba_spree/order_updater_decorator.rb,
app/models/ba_spree/payment_method_decorator.rb,
app/decorators/ba_spree/product_pricing_decorator.rb,
lib/generators/ba_spree/install/install_generator.rb,
app/controllers/ba_spree/store_controller_decorator.rb,
app/controllers/ba_spree/checkout_controller_decorator.rb,
app/controllers/concerns/ba_spree/theme_concern_decorator.rb

Overview

Spree 5.3 のイベント subscriber 登録に重複ガードが無い問題への対策。

spree_emails の Engine#after_initialize は無条件で Spree.subscribers.concat([Spree::OrderEmailSubscriber, ...]) を行い、 Spree::Events.register_subscribers!Spree.subscribers.uniq せず反復、 さらに Spree::Events::Registry#register も重複チェックをしない。 このため何らかの理由で subscriber が二重に登録されると subscription も二重化し、 注文確認メール / キャンセルメールが 2 通ずつ送信される。

resolve 後の subscriber クラス単位で重複排除し、同一 subscriber を 1 回しか登録しないようにする(環境非依存で堅牢)。

Defined Under Namespace

Modules: AddressDecorator, AdjustmentDecorator, CheckoutControllerDecorator, Generators, OrderDecorator, OrderUpdaterDecorator, PaymentMethodDecorator, ProductDecorator, ProductPricingDecorator, SpreeEventsDedupPatch, StoreControllerDecorator, StoreDecorator, ThemeConcernDecorator, VariantDecorator Classes: Engine, SetupService

Constant Summary collapse

VERSION =
"1.0.0"