Someone has run a yum update
on the CentOS box (Linux 2.6.28.1-xxxx-std-ipv4-32 #2 SMP Fri Jan 30 09:55:02 UTC 2009 i686 i686 i386 GNU/Linux
) that runs a Ruby on Rails app (Redmine) served with Passenger (Phusion Passenger version 3.0.7
). As a result the RoR app stopped working and this is what happens now.
My uderstanding is that the yum update
command updated the OpenSSL library, which is now at version OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
. I suppose this version is no longer compatible with the version of Ruby installed on the machine (ruby 1.8.5 (2006-08-25) [i386-linux]
). Indeed, if I do require 'openssl'
inside irb
, I get the following:
$ irb
irb(main):001:0> require 'openssl'
TypeError: Cipher is not a class
from /usr/lib/ruby/site_ruby/1.8/openssl/cipher.rb:22
from /usr/lib/ruby/site_ruby/1.8/openssl.rb:20:in `require'
from /usr/lib/ruby/site_ruby/1.8/openssl.rb:20
from (irb):1:in `require'
from (irb):1
which is the same error as printed when accessing the application via HTTP.
I suspect that downgrading the OpenSSL version now is a risky business, since the yum update
command probably updated other packages (e.g. mod_ssl) that now rely on the new OpenSSL library.
I decided instead to check whether Ruby 1.8.7 would work better with the new OpenSSL version. I downloaded it, built it and make install
'ed it such that the Ruby binary resides in /usr/local/bin/
alongside the system's Ruby (1.8.5) which is in /usr/bin/
as usual. Doing a require 'openssl'
in irb shows that it indeed works.
Now, my question is as follow: should I remove my own built version of Ruby and rather update the system's Ruby to 1.8.7? Or should I somehow instruct Passenger to use the ruby binary that I built myself (the one in /usr/local/bin/
)?
Thanks for your help.
Cheers, Franz