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>