diff --git a/lib/discourse.rb b/lib/discourse.rb index c0be4dea179..1db8c5df360 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -328,6 +328,9 @@ module Discourse # in case v8 was initialized we want to make sure it is nil PrettyText.reset_context + + Tilt::ES6ModuleTranspiler.reset_context if defined? Tilt::ES6ModuleTranspiler + JsLocaleHelper.reset_context if defined? JsLocaleHelper nil end diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index cc3c785cb07..d18afbf3c92 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -33,6 +33,10 @@ JS ctx end + def self.reset_context + @ctx = nil + end + def self.v8 return @ctx if @ctx diff --git a/lib/js_locale_helper.rb b/lib/js_locale_helper.rb index 708bdc90642..e8550b1b887 100644 --- a/lib/js_locale_helper.rb +++ b/lib/js_locale_helper.rb @@ -165,6 +165,10 @@ module JsLocaleHelper result end + def self.reset_context + @ctx = nil + end + @mutex = Mutex.new def self.with_context @mutex.synchronize do diff --git a/script/check_forking.rb b/script/check_forking.rb new file mode 100644 index 00000000000..d0174f7448a --- /dev/null +++ b/script/check_forking.rb @@ -0,0 +1,28 @@ +require File.expand_path("../../config/environment", __FILE__) + +def pretty + puts "" + puts PrettyText.cook("My pid is #{Process.pid}") +end + +Discourse.after_fork +pretty + +child = fork do + Discourse.after_fork + pretty + grand_child = fork do + Discourse.after_fork + pretty + puts "try to exit" + Process.kill "KILL", Process.pid + end + puts "before wait 2" + Process.wait grand_child + puts "after wait 2" + Process.kill "KILL", Process.pid +end + +puts "before wait 1" +Process.wait child +puts "after wait 1"