sql >> Database >  >> NoSQL >> Redis

Eenvoudig gebruik van EM::Synchrony#sync veroorzaakt 'root fiber' FiberError -- mijn fout?

Ik denk dat je code kan werken als je de juiste versie van em-hiredis vindt die het probeert te patchen, dat is een probleem met losse afhankelijkheden.

Hier is een volledig werkende code, maar gebaseerd op de hoofdtak van 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

en voer het dan uit met:

$ bundle
$ ruby test.rb

Monkey-patching is een inherent gebrekkige manier om edelstenen te patchen, tenzij je ervoor zorgt dat de exacte versie van de edelsteen die je hebt gepatcht wordt gebruikt, iets wat em-synchrony zou moeten afdwingen of op zijn minst detecteren.




  1. mongodb/mongoose findMany - vind alle documenten met ID's in array

  2. Verificatiefout tijdens het opslaan naar mongodb

  3. Hoe hernoem je een MongoDB-database?

  4. Hoe maak je een geneste index in MongoDB?