diff --git a/packages/gems/js/lib/js/require_remote.rb b/packages/gems/js/lib/js/require_remote.rb index e70dcedf79..47dd7725ed 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 0000000000..42783c2c91 --- /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