Redis
 sql >> Database >  >> NoSQL >> Redis

Il semplice utilizzo di EM::Synchrony#sync provoca FiberError "fibra radice" -- colpa mia?

Penso che il tuo codice possa funzionare se trovi la versione corretta di em-hiredis che sta cercando di patchare, questo è un problema con le dipendenze libere.

Ecco un codice completamente funzionante ma basato sul ramo principale di 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

e quindi eseguilo con:

$ bundle
$ ruby test.rb

Il patching delle scimmie è un modo intrinsecamente imperfetto di patchare le gemme a meno che tu non ti assicuri che venga utilizzata la versione esatta della gemma che hai patchato, il che è qualcosa che la sincronia em dovrebbe far rispettare o almeno rilevare.