From b707a6d0eb7a694595152c5ca18f1e72e0bc2f7e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 30 Sep 2018 16:55:16 -0700 Subject: Explain why we have explicit marshaling methods --- actionview/lib/action_view/template.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'actionview/lib') diff --git a/actionview/lib/action_view/template.rb b/actionview/lib/action_view/template.rb index 2dfb14ab46..f5f64263da 100644 --- a/actionview/lib/action_view/template.rb +++ b/actionview/lib/action_view/template.rb @@ -235,11 +235,15 @@ module ActionView end end - def marshal_dump + + # Exceptions are marshaled when using the parallel test runner with DRb, so we need + # to ensure that references to the template object can be marshaled as well. This means forgoing + # the marshalling of the compiler mutex and instantiating that again on unmarshaling. + def marshal_dump # :nodoc: [ @source, @identifier, @handler, @compiled, @original_encoding, @locals, @virtual_path, @updated_at, @formats, @variants ] end - def marshal_load(array) + def marshal_load(array) # :nodoc: @source, @identifier, @handler, @compiled, @original_encoding, @locals, @virtual_path, @updated_at, @formats, @variants = *array @compile_mutex = Mutex.new end -- cgit v1.2.3