我试图在irb中要求hiredis并且它已经向我发送了一个错误:
irb(main):001:0> require "hiredis"
WARNING: could not load hiredis extension, using (slower) pure Ruby implementation.
=> true
irb(main):002:0>
经过进一步调查,我注意到它在代码的这一部分崩溃了。
# hiredis-rb/lib/hiredis/connection.rb
module Hiredis
begin
require "hiredis/ext/connection"
Connection = Ext::Connection
rescue LoadError
warn "WARNING: could not load hiredis extension, using (slower) pure Ruby implementation."
require "hiredis/ruby/connection"
Connection = Ruby::Connection
end
end
所以,我需要文件hiredis/ext/connection
,我得到的错误是以下错误:
irb(main):001:0> require "hiredis/ext/connection"
LoadError: /home/***/projects/***/.gemset/extensions/x86_64-linux/2.1.0-static/hiredis-0.5.2/hiredis/ext/hiredis_ext.so:
undefined symbol: redisReaderFree -
/home/***/projects/***/.gemset/extensions/x86_64-linux/2.1.0-static/hiredis-0.5.2/hiredis/ext/hiredis_ext.so
from /home/***/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
我使用的是Ubuntu和Redis的最新稳定版本(2.8.18)。我该如何解决?谢谢!
编辑:
所以在看了hiredis-rb页面后https://github.com/redis/hiredis-rb,它说我应该做以下事情:
要在redis-rb中使用hiredis,您需要要求 在创建新连接之前使用redis / connection / hiredis。
所以我在irb上做了require "redis/connection/hiredis"
然后require "hiredis"
,一切正常,没有更多的警告。
但现在这些警告现在已经不复存在了。我认为我每次都需要require "redis/connection/hiredis"
才能使用它,但现在它才有效。所以我不知道为什么它现在不再警告我了。我认为在irb会话期间调用require "redis/connection/hiredis"
仅适用于该会话,而不是所有后续会话。