aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2018-03-13 18:10:46 +0100
committerLuc Donnet2018-03-23 17:16:43 +0100
commit635d380160933181a379871b19cfba7b5f4965e9 (patch)
treeb6fa873a526ec2cca02b562ae482d38a9db23ca1
parent96d01a90977de5d94ab3f5c31e043579c86b150a (diff)
downloadchouette-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.rb5
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