Ich denke, Ihr Code kann funktionieren, wenn Sie die richtige Version von em-hiredis finden, die es zu patchen versucht, das ist ein Problem mit losen Abhängigkeiten.
Hier ist ein voll funktionsfähiger Code, der jedoch auf dem Master-Zweig von em-synchrony basiert:
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
und führen Sie es dann mit:
aus$ bundle
$ ruby test.rb
Monkey-Patching ist eine von Natur aus fehlerhafte Art, Edelsteine zu patchen, es sei denn, Sie stellen sicher, dass die genaue Version des Edelsteins, den Sie gepatcht haben, verwendet wird, was etwas ist, was em-synchrony erzwingen oder zumindest erkennen sollte.