Мисля, че кодът ви може да работи, ако намерите правилната версия на em-hiredis, която се опитва да заплати, това е един проблем с хлабавите зависимости.
Ето напълно работещ код, но базиран на главния клон на em-synchrony:
Gemfile:
source :rubygems
gem 'em-synchrony', :git => "git://github.com/igrigorik/em-synchrony.git"
gem 'em-hiredis', '~> 0.1.0'
test.rb:
require 'rubygems'
require 'bundler/setup'
require 'em-synchrony'
require 'em-synchrony/em-hiredis'
EventMachine.synchrony do
redis = EM::Hiredis.connect
redis.set('foo', 'bar')
puts redis.get('foo')
EM.stop
end
и след това го стартирайте с:
$ bundle
$ ruby test.rb
Поправянето на маймуни е по своята същност неправилен начин за кръпка на скъпоценни камъни, освен ако не гарантирате, че се използва точната версия на скъпоценния камък, който сте закърпили, което е нещо, което em-синхронът трябва да наложи или поне да открие.