sql >> Base de Datos >  >> NoSQL >> Redis

El simple uso de EM::Synchrony#sync causa FiberError de 'fibra raíz' -- ¿mi culpa?

Creo que su código puede funcionar si encuentra la versión correcta de em-hiredis que está tratando de parchear, ese es un problema con las dependencias sueltas.

Aquí hay un código completamente funcional pero basado en la rama maestra de em-synchrony:

Archivo de gemas:

source :rubygems

gem 'em-synchrony', :git => "git://github.com/igrigorik/em-synchrony.git"
gem 'em-hiredis', '~> 0.1.0'

prueba.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

y luego ejecutarlo con:

$ bundle
$ ruby test.rb

El parcheo mono es una forma inherentemente defectuosa de parchear gemas a menos que se asegure de que se use la versión exacta de la gema que parcheó, algo que em-synchrony debería aplicar o al menos detectar.