Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

O uso simples de EM::Synchrony#sync causa 'fibra raiz' FiberError - culpa minha?


Eu acho que seu código pode funcionar se você encontrar a versão correta do em-hiredis que está tentando corrigir o macaco, esse é um problema com dependências soltas.

Aqui está um código totalmente funcional, mas baseado no branch master do em-synchrony:

Gemfile:
source :rubygems

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

teste.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 depois execute-o com:
$ bundle
$ ruby test.rb

O patch de macaco é uma maneira inerentemente falha de corrigir gems, a menos que você garanta que a versão exata da gem que você corrigiu seja usada, o que é algo que o em-synchrony deve impor ou pelo menos detectar.