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