OpenSSL::CipherErrorの消失

業務で作っていたツールを別の環境に持っていったら動かなくなったので調べてみたら、OpenSSLのCipherErrorという例外の名前空間が(っていうのかな)変更になっていた。

% irb-1.8.6 --simple-prompt
>> RUBY_VERSION
=> "1.8.6"
>> require "openssl"
=> true
>> OpenSSL::VERSION
=> "1.0.0"
>> OpenSSL::OPENSSL_VERSION
=> "OpenSSL 0.9.7a Feb 19 2003"
>> OpenSSL::OPENSSL_VERSION_NUMBER
=> 9465887
>> OpenSSL::CipherError
=> OpenSSL::CipherError
>> OpenSSL::Cipher::CipherError
NameError: uninitialized constant OpenSSL::Cipher::CipherError
       from (irb):7
       from :0
% irb-1.8.7 --simple-prompt
>> RUBY_VERSION
=> "1.8.7"
>> require "openssl"
=> true
>> OpenSSL::VERSION
=> "1.0.0"
>> OpenSSL::OPENSSL_VERSION
=> "OpenSSL 0.9.8c 05 Sep 2006"
>> OpenSSL::OPENSSL_VERSION_NUMBER
=> 9470015
>> OpenSSL::CipherError
NameError: uninitialized constant OpenSSL::CipherError
       from (irb):6
>> OpenSSL::Cipher::CipherError
=> OpenSSL::Cipher::CipherError

ふむ。さて、アプリケーションではどちらでも動くようにするためにどう書くのがいいだろう。バージョン番号で分岐するのは多分あまりスマートじゃないよね。defined? かなぁ。
せめて 1.8系の間は OpenSSL::CipherError に別名で残しておいてくれてもいいんじゃないかと思うけど、何か深い理由があったのだろうか。