ruby - 为什么需要 mongo 给我 LoadError : no such file to load -- openssl

标签 ruby

我正在使用 Ubuntu Server 10,Ruby 1.9.2

当我尝试要求'mongo'时

它给我这个错误:

irb(main):001:0> require 'mongo'
LoadError: no such file to load -- openssl
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/mongo-1.5.2/lib/mongo/util/ssl_socket.rb:1:in `<top (required)>'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/mongo-1.5.2/lib/mongo.rb:63:in `<top (required)>'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from (irb):1
    from /usr/local/bin/irb:12:in `<main>'

最佳答案

您需要两件事:OpenSSL 本身和 OpenSSL 的 ruby​​ 绑定(bind)。第一部分正如 Yossi 所说:

sudo apt-get install libssl

第二个取决于您如何安装 ruby​​。我从你问题中的路径猜测你是从源代码编译 ruby​​ 的。在这种情况下,您首先需要确保您拥有 openssl header :

sudo apt-get install libssl-dev

那么当你编译 ruby​​ 时它应该被自动拾取。如果您不想重新编译 ruby​​,您应该能够通过以下方式构建 OpenSSL 绑定(bind)

  • cd 到包含 ruby​​ 源的文件夹
  • cd 到 ext/openssl
  • ruby extconf.rb
  • make && sudo make install

关于ruby - 为什么需要 mongo 给我 LoadError : no such file to load -- openssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8642368/

相关文章:

ruby-on-rails - 通过关联软删除 has_many

ruby - 在 ruby 中分离出猴子斑 block ?

ruby - 是否可以递归地要求 Ruby 中目录中的所有文件?

arrays - Flatten 在直接调用和在方法中调用时的工作方式不同

ruby - 如何在 heroku 中使用自己的 mysql 数据库服务器?

ruby-on-rails - 构建哈希时字符串化键错误

ruby - Codility : CountDistinctSlices. 我错过了什么?

ruby - 性能 - Mongo ID : BSON or String

php - 有没有一种简单的方法可以像使用 NGINX 的 PHP 文件一样直接使用 erb 文件?

sql-server - TinyTds - Adaptive 服务器不可用或不存在