cannot load such file -- openssl (again)

This problem has been discussed a number of times, but none of the given solutions seems to work for me.

Problem:
Trying to generate the infrastructure for testing with Cucumber gives the following error

~/.../OTK-register$ rails generate cucumber:install
/home/tpollak/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- openssl (LoadError)
  from /home/tpollak/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `block in require'
...
/gems/railties-3.2.1/lib/rails/application.rb:103:in `require_environment!'
  from /home/tpollak/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:25:in `<top (required)>'
  from script/rails:6:in `require'
  from script/rails:6:in `<main>'

My environment is Ubuntu 11.10, Rails 3.2.1, ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]

and

~/.../OTK-register$ bundle install
Using rake (0.9.2.2)
Using i18n (0.6.0)
Using multi_json (1.0.4)
Using activesupport (3.2.1)
Using builder (3.0.0)
Using activemodel (3.2.1)
Using erubis (2.7.0)
Using journey (1.0.1)
Using rack (1.4.1)
Using rack-cache (1.1)
Using rack-test (0.6.1)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.1.2)
Using actionpack (3.2.1)
Using mime-types (1.17.2)
Using polyglot (0.3.3)
Using treetop (1.4.10)
Using mail (2.4.1)
Using actionmailer (3.2.1)
Using arel (3.0.0)
Using tzinfo (0.3.31)
Using activerecord (3.2.1)
Using activeresource (3.2.1)
Using bundler (1.0.22)
Using nokogiri (1.5.0)
Using ffi (1.0.11)
Using childprocess (0.3.1)
Using rubyzip (0.9.6.1)
Using selenium-webdriver (2.19.0)
Using xpath (0.1.4)
Using capybara (1.1.2)
Using coffee-script-source (1.2.0)
Using execjs (1.3.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.2)
Using json (1.6.5)
Using rdoc (3.12)
Using thor (0.14.6)
Using railties (3.2.1)
Using coffee-rails (3.2.2)
Using diff-lcs (1.1.3)
Using gherkin (2.7.7)
Using term-ansicolor (1.0.7)
Using cucumber (1.1.4)
Using cucumber-rails (1.2.1)
Using database_cleaner (0.7.1)
Using mysql2 (0.3.11)
Using rails (3.2.1)
Using rspec-core (2.8.0)
Using rspec-expectations (2.8.0)
Using rspec-mocks (2.8.0)
Using rspec (2.8.0)
Using rspec-rails (2.8.1)
Using sass (3.1.15)
Using sass-rails (3.2.4)
Using uglifier (1.2.3)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

and

~$ ls /*/*/*/*/openssl* | grep openssl
/usr/bin/X11/X11/openssl
/usr/lib/i386-linux-gnu/pkgconfig/openssl.pc
/usr/lib/ruby/1.8/openssl.rb
/usr/lib/ruby/1.9.1/openssl.rb
/usr/share/doc/openssl/openssl_button.gif
/usr/share/doc/openssl/openssl_button.html
/usr/share/doc/openssl/openssl.txt.gz
/usr/share/man/man1/openssl.1ssl.gz
/var/cache/apt/archives/openssl_1.0.0e-2ubuntu4.2_i386.deb
/var/lib/dpkg/info/openssl.conffiles
/var/lib/dpkg/info/openssl.list
/var/lib/dpkg/info/openssl.md5sums
/var/lib/dpkg/info/openssl.postinst
/usr/lib/ruby/1.8/openssl:
/usr/lib/ruby/1.9.1/openssl:

I have seen solutions for users of RVM (remove ruby and reinstall with directory path for openssl, but can not adjust them for rbenv and my installation of openssl.

Does somebody know how to fix the problem?

Regards

I don't know for rbenv, but usually this gets fixed when you have your
openssl dev files in an standard location at the time you compile
ruby.
Make sure of that and make sure you force the re-building of ruby.
(including the ./configure step).

HTH

Openssl is located in /usr/lib/ruby/1.9.1. Is that a standard
location?

The version is openssl.rb 25189 2009-10-02 12:04:37Z akr. Is this the
correct version?

How do I enforce a rebuild of Ruby? Because a possible cause of the
problem is that openssl was added after the installation of Ruby.

> This problem has been discussed a number of times, but none of the given
> solutions seems to work for me.

> Problem:
> Trying to generate the infrastructure for testing with Cucumber gives the
> following error

> ~/.../OTK-register$ rails generate cucumber:install
> /home/tpollak/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in
> `require': cannot load such file -- openssl (LoadError)
> from

...

Openssl is located in /usr/lib/ruby/1.9.1. Is that a standard
location?

The version is openssl.rb 25189 2009-10-02 12:04:37Z akr. Is this the
correct version?

This might be the ruby-openssl package, you need the plain openssl
package and also the dev files for openssl. If you're using a debian
based distro the package should be named openssl-dev.

How do I enforce a rebuild of Ruby? Because a possible cause of the
problem is that openssl was added after the installation of Ruby.

I'm not an rbenv user but try removing the installation and re install
it again. I know RVM caches the sources and you have to force the
re-configuration, but I don't know if rbenv does the same thing.
I know for sure ruby-build doesn't cache the sources and probably
rbenv wont, however, I cannot ensure that.

Hope it helps.

Cheers.

Thanks for the tips, Leonardo.

It works now. What did I do?

a - removed the ruby/rails installation by deleting the
directory .../.rbenv/versions/1.9.3-p0

b - restarting the installation from scratch

Note that I left all of Openssl installed. I guess that the cause for
the problem was that Openssl was installed AFTER Ruby was built.

Great!
And sure, you need openssl (dev and library) files at ruby buildtime.

Glad it helped.

Just in case you needed more information, it can be confusing if you're
using the Debian dpkg installer and then receive this error. You can
download the source code file as well and extract it. Under
source/ext/openssl you can then run ruby extconf.rb

Prior to this you should have installed ruby enterprise and also
attempted to install the openssl libraries (apt-get install
libopenssl-ruby)

Once you have ran ruby extconf.rb, you can run make and then sudo make
install. This should allow you to then run passenger-install-apache<tab>