summaryrefslogtreecommitdiff
path: root/config/initializers_before_autoloader/003_gc_compact.rb
diff options
context:
space:
mode:
Diffstat (limited to 'config/initializers_before_autoloader/003_gc_compact.rb')
-rw-r--r--config/initializers_before_autoloader/003_gc_compact.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/config/initializers_before_autoloader/003_gc_compact.rb b/config/initializers_before_autoloader/003_gc_compact.rb
new file mode 100644
index 00000000000..6b5d49d79ab
--- /dev/null
+++ b/config/initializers_before_autoloader/003_gc_compact.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+# Be sure to restart your server when you modify this file.
+#
+# Disables `GC.compact` method via monkey-patching.
+# This is temporary measure to deal with reguarly appearing compacting issues (resulting in segfaults) in external gems.
+# Having this patch allow using `nakayoshi_fork` in `config/puma.rb`,
+# only without `GC.compact` (still invoking 4 GC cycles).
+# Refer to for details: https://github.com/puma/puma/blob/80274413b04fae77cac7a7fecab7d6e89204343b/lib/puma/util.rb#L27
+
+# rubocop:disable Rails/Output
+module NakayoshiForkCompacting
+ module MonkeyPatch
+ def compact
+ puts 'Note: GC compacting is currently disabled.'\
+ ' Refer to `config/initializers_before_autoloader/003_gc_compact.rb` for details.'
+ end
+ end
+end
+
+GC.singleton_class.prepend NakayoshiForkCompacting::MonkeyPatch