From: Tanaka Akira Date: 2009-02-15T18:00:31+09:00 Subject: [ruby-dev:38018] circular require in openssl 以下のように、openssl には環状の require があり、警告が出ます。 % ./ruby -v -ropenssl -e '' ruby 1.9.2dev (2009-02-15 trunk 22317) [i686-linux] /home/ruby/ancdata/lib/ruby/1.9.1/i686-linux/openssl.so: warning: loading in progress, circular require considered harmful - /home/ruby/ancdata/lib/ruby/1.9.1/openssl.rb /home/ruby/ancdata/lib/ruby/1.9.1/openssl/ssl.rb:17: warning: loading in progress, circular require considered harmful - /home/ruby/ancdata/lib/ruby/1.9.1/openssl.rb /home/ruby/ancdata/lib/ruby/1.9.1/openssl/x509.rb:17: warning: loading in progress, circular require considered harmful - /home/ruby/ancdata/lib/ruby/1.9.1/openssl.rb これを消したいのですが、どうするのがいいでしょうか。 require するときは require 'openssl' としなさい、ということ にしてしまうのであれば、下につけたパッチで可能です。 ただ、これだと require "openssl/ssl" などとしているところは ぜんぶ書き換える必要があります。添付されている中には lib/net/pop.rb と lib/net/imap.rb がありました。 require するところを書き換えなくてもいいようにするのも *.rb なファイルを倍に増やせば可能ではありますが、どうするのがいい ですかねぇ。 Index: ext/openssl/ossl_digest.c =================================================================== --- ext/openssl/ossl_digest.c (revision 22326) +++ ext/openssl/ossl_digest.c (working copy) @@ -233,7 +233,6 @@ ossl_digest_block_length(VALUE self) void Init_ossl_digest() { - rb_require("openssl"); rb_require("digest"); #if 0 /* let rdoc know about mOSSL */ Index: ext/openssl/lib/openssl/ssl.rb =================================================================== --- ext/openssl/lib/openssl/ssl.rb (revision 22326) +++ ext/openssl/lib/openssl/ssl.rb (working copy) @@ -14,7 +14,6 @@ $Id$ =end -require "openssl" require "openssl/buffering" require "fcntl" Index: ext/openssl/lib/openssl/x509.rb =================================================================== --- ext/openssl/lib/openssl/x509.rb (revision 22326) +++ ext/openssl/lib/openssl/x509.rb (working copy) @@ -14,8 +14,6 @@ $Id$ =end -require "openssl" - module OpenSSL module X509 class ExtensionFactory Index: lib/net/pop.rb =================================================================== --- lib/net/pop.rb (revision 22326) +++ lib/net/pop.rb (working copy) @@ -25,7 +25,7 @@ require 'digest/md5' require 'timeout' begin - require "openssl/ssl" + require "openssl" rescue LoadError end Index: lib/net/imap.rb =================================================================== --- lib/net/imap.rb (revision 22326) +++ lib/net/imap.rb (working copy) @@ -18,7 +18,7 @@ require "monitor" require "digest/md5" require "strscan" begin - require "openssl/ssl" + require "openssl" rescue LoadError end -- [田中 哲][たなか あきら][Tanaka Akira]