rubyでSymbol not found: _SSLv2_client_method (LoadError)が出るとき

Homebrewで

1
2
brew update
brew upgrade

したら、HomebrewでインストールしているrubyがOpenSSL関連のエラーで動かなくなってしまいました。 具体的にはrubyスクリプトを実行したときに以下のように”Symbol not found: _SSLv2_client_method (LoadError)”というエラーがでます。

/usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': dlopen(/usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/x86_64-darwin12.0/openssl.bundle, 9): Symbol not found: _SSLv2_client_method (LoadError)
  Referenced from: /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/x86_64-darwin12.0/openssl.bundle
  Expected in: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
 in /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/x86_64-darwin12.0/openssl.bundle - /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/x86_64-darwin12.0/openssl.bundle
	from /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/openssl.rb:17:in `'
	from /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Cellar/ruby/2.1.2/lib/ruby/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize.rb:9:in `'
	from /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `require'
	from /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
	from /usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:144:in `require'

Rubyが参照しているOpenSSLのバージョンが、現在システムに入っている物とズレているのが原因なので、単純な解決方法としてはHomebrewでrubyを再インストールすることです。

1
2
3
4
5
6
> ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin12.0]
> brew uninstall ruby
> brew install ruby
> ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin13.0]

ちょっとバージョンが上がっていました。これでちゃんとスクリプトも動くようになりました。