mirror of
https://github.com/aasm/aasm
synced 2023-03-27 23:22:41 -04:00
5d22f691fe
* I'm in the process of updating a rails app from rails 5.2 to rails 7. Currently the app is using AASM version 4.12.3. When I update to AASM version 5.x we start getting a failing spec in our app. The implementation uses the `after:` dsl and passes it a class. ``` ruby event :run_payment_create do transitions to: :active, after: Payment::GoCardless::Subscription::Charge end ``` The spec in our app expects that class to receive new 1 time with the args passed from after, but the spec is failing saying that `Payment::GoCardless::Subscription::Charge` received `.new` with the expected args twice. I started debugging with `bundle open aasm` and pry and I found that the `ClassInvoker` has a `instance` method that memoizes the instance returned from the `retrieve_instance` method, but the `instance` method was only being used by `log_source_location` and `log_method_info` methods while `invoke_subject` was calling `retrieve_instance` directly resulting in `retrieve_instance` being called twice. * Update `invoke_subject` method to use `instance.call` so that the instance will be memoized and subsequent calls to `instance` won't try to instantiate the class a second time. |
||
---|---|---|
.. | ||
base_invoker_spec.rb | ||
class_invoker_spec.rb | ||
literal_invoker_spec.rb | ||
proc_invoker_spec.rb |