summaryrefslogtreecommitdiff
path: root/lib/coderay.rb
diff options
context:
space:
mode:
authorConrad Irwin <conrad.irwin@gmail.com>2011-12-23 08:33:21 -0800
committerConrad Irwin <conrad.irwin@gmail.com>2011-12-23 08:36:44 -0800
commitac2d6f1898a5aa1aad7cc254290ec9341d2cdf60 (patch)
tree9a7a912105879ad19b4012a4512aa7598d6bb15a /lib/coderay.rb
parent3d80f03434ba20544a410c13228738f4362d731b (diff)
downloadcoderay-ac2d6f1898a5aa1aad7cc254290ec9341d2cdf60.tar.gz
Remove assumption about a stable $:
In some environments (e.g. [1]) $: can change between loading the library and using it. To avoid this problem, we always pass an absolute path to autoload internal modules. [1] https://github.com/pry/pry/issues/280
Diffstat (limited to 'lib/coderay.rb')
-rw-r--r--lib/coderay.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/coderay.rb b/lib/coderay.rb
index c897220..63ec555 100644
--- a/lib/coderay.rb
+++ b/lib/coderay.rb
@@ -127,7 +127,18 @@ module CodeRay
$CODERAY_DEBUG ||= false
- require 'coderay/version'
+ # Assuming the rel_path is a subpath of lib/
+ def self.abs_path(rel_path)
+ File.join(File.dirname(__FILE__), rel_path)
+ end
+
+ # In order to work in environments that alter $:, we need to
+ # set the absolute path when autoloading files.
+ def self.autoload(const_name, rel_path)
+ super const_name, abs_path(rel_path)
+ end
+
+ require abs_path('coderay/version')
# helpers
autoload :FileType, 'coderay/helpers/file_type'