Myslím, že váš kód může fungovat, pokud najdete správnou verzi em-hiredis, kterou se snaží opičit, to je jeden problém s volnými závislostmi.
Zde je plně funkční kód, ale založený na hlavní větvi 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
a poté jej spusťte pomocí:
$ bundle
$ ruby test.rb
Opičí záplatování je ze své podstaty chybný způsob záplatování drahokamů, pokud nezajistíte použití přesné verze drahokamu, který jste opravili, což je něco, co by em-synchrony měla vynutit nebo alespoň detekovat.