From 559be019deb5b8996842456360291182da1898ba Mon Sep 17 00:00:00 2001 From: knu Date: Wed, 14 Feb 2007 12:45:59 +0000 Subject: [PATCH] * ext/digest/lib/digest.rb (Digest::self.const_missing): Drop autoloads for sha2 classes in favor of handling in const_missing(), to work around a problem exposed on OS X. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ ext/digest/lib/digest.rb | 22 ++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 06e585f1d9..56a9db0c3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Feb 14 21:39:36 2007 Akinori MUSHA + + * ext/digest/lib/digest.rb (Digest::self.const_missing): Drop + autoloads for sha2 classes in favor of handling in + const_missing(), to work around a problem exposed on OS X. + Wed Feb 14 21:19:47 2007 Koichi Sasada * thread_pthread.ci (native_thread_create): adjust 4KB (page size) diff --git a/ext/digest/lib/digest.rb b/ext/digest/lib/digest.rb index a56d47551b..244cd436b3 100644 --- a/ext/digest/lib/digest.rb +++ b/ext/digest/lib/digest.rb @@ -1,19 +1,21 @@ require 'digest.so' module Digest - autoload "SHA256", "digest/sha2.so" - autoload "SHA384", "digest/sha2.so" - autoload "SHA512", "digest/sha2.so" - def self.const_missing(name) - begin - require File.join('digest', name.downcase) - - return Digest.const_get(name) if Digest.const_defined?(name) - rescue LoadError => e + case name + when :SHA256, :SHA384, :SHA512 + lib = 'digest/sha2.so' + else + lib = File.join('digest', name.to_s.downcase) end - raise NameError, "Digest class not found: Digest::#{name}" + begin + require lib + rescue LoadError => e + raise LoadError, "library not found for class Digest::#{name} -- #{lib}" + end + + Digest.const_get(name) end class ::Digest::Class