From 0df841f2cf97af689690adff46f2f3849ef32936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20=C5=A0im=C3=A1nek?= Date: Sun, 17 Aug 2025 05:30:05 +0200 Subject: [PATCH] Add require_relative shim file. --- packages/gems/js/lib/js/require_remote.rb | 8 +++++++- .../js/lib/js/require_remote/relative_shim.rb | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 packages/gems/js/lib/js/require_remote/relative_shim.rb diff --git a/packages/gems/js/lib/js/require_remote.rb b/packages/gems/js/lib/js/require_remote.rb index e70dcedf7..47dd7725e 100644 --- a/packages/gems/js/lib/js/require_remote.rb +++ b/packages/gems/js/lib/js/require_remote.rb @@ -37,7 +37,13 @@ module JS # rescue LoadError # JS::RequireRemote.instance.load(path) # end - # end + # end + # + # You can also load included shim to achieve the same. + # + # == Example + # + # require 'js/require_remote/relative_shim' # class RequireRemote include Singleton diff --git a/packages/gems/js/lib/js/require_remote/relative_shim.rb b/packages/gems/js/lib/js/require_remote/relative_shim.rb new file mode 100644 index 000000000..42783c2c9 --- /dev/null +++ b/packages/gems/js/lib/js/require_remote/relative_shim.rb @@ -0,0 +1,15 @@ +require 'js/require_remote' + +module Kernel + alias original_require_relative require_relative + + def require_relative(path) + caller_path = caller_locations(1, 1).first.absolute_path || '' + dir = File.dirname(caller_path) + file = File.absolute_path(path, dir) + + original_require_relative(file) + rescue LoadError + JS::RequireRemote.instance.load(path) + end +end