Tôi nghĩ rằng mã của bạn có thể hoạt động nếu bạn tìm thấy phiên bản chính xác của em-Rentis mà nó đang cố gắng vá lỗi, đó là một vấn đề với các phụ thuộc lỏng lẻo.
Đây là mã hoạt động đầy đủ nhưng dựa trên nhánh chính của 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
và sau đó chạy nó với:
$ bundle
$ ruby test.rb
Khỉ vá lỗi là một cách vá đá quý vốn đã thiếu sót, trừ khi bạn đảm bảo rằng phiên bản chính xác của viên đá quý mà bạn vá được sử dụng, đó là thứ mà hệ thống đồng bộ nên thực thi hoặc ít nhất là phát hiện.