diff options
| author | Teddy Wing | 2018-03-13 18:10:46 +0100 | 
|---|---|---|
| committer | Luc Donnet | 2018-03-23 17:16:43 +0100 | 
| commit | 635d380160933181a379871b19cfba7b5f4965e9 (patch) | |
| tree | b6fa873a526ec2cca02b562ae482d38a9db23ca1 | |
| parent | 96d01a90977de5d94ab3f5c31e043579c86b150a (diff) | |
| download | chouette-core-635d380160933181a379871b19cfba7b5f4965e9.tar.bz2 | |
RouteWayCostWorker: Fix recursive worker call
Since this method was run on `after_save` and in it
`RouteWayCostCalculator` calls `#update` on the given route, it caused
an infinite recursive call to the worker. To prevent this, wrap the
`#calculate!` call in methods that unset and reset the callback.
Refs #6095
| -rw-r--r-- | app/workers/route_way_cost_worker.rb | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/app/workers/route_way_cost_worker.rb b/app/workers/route_way_cost_worker.rb index fa5bd737d..2ec8cdff9 100644 --- a/app/workers/route_way_cost_worker.rb +++ b/app/workers/route_way_cost_worker.rb @@ -4,6 +4,11 @@ class RouteWayCostWorker    def perform(referential_id, route_id)      Referential.find(referential_id).switch      route = Chouette::Route.find(route_id) + +    Chouette::Route.skip_callback(:save, :after, :calculate_costs!) +      RouteWayCostCalculator.new(route).calculate! + +    Chouette::Route.set_callback(:save, :after, :calculate_costs!)    end  end | 
