From 35f2f7a69e9fd5b505935b89cb7861a47ba85f4d Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Tue, 3 Aug 2021 17:34:45 -0400 Subject: [PATCH] ext: load C extension files from non-native gems via "require" and not "require relative" Fixes #2300 --- lib/nokogiri/extension.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/nokogiri/extension.rb b/lib/nokogiri/extension.rb index 73d9269b24..a7e8ca8637 100644 --- a/lib/nokogiri/extension.rb +++ b/lib/nokogiri/extension.rb @@ -2,6 +2,7 @@ # load the C or Java extension begin + # native precompiled gems package shared libraries in /lib/nokogiri/ ::RUBY_VERSION =~ /(\d+\.\d+)/ require_relative "#{Regexp.last_match(1)}/nokogiri" rescue LoadError => e @@ -22,5 +23,9 @@ EOM raise e end - require_relative "nokogiri" + + # use "require" instead of "require_relative" because non-native gems will place C extension files + # in Gem::BasicSpecification#extension_dir after compilation (during normal installation), which + # is in $LOAD_PATH but not necessarily relative to this file (see #2300) + require "nokogiri/nokogiri" end