Saya pikir kode Anda dapat berfungsi jika Anda menemukan versi em-hiredis yang benar yang mencoba untuk menambal monyet, itu adalah satu masalah dengan dependensi yang longgar.
Berikut adalah kode yang berfungsi penuh tetapi berdasarkan cabang utama dari em-synchrony:
File Permata:
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
lalu jalankan dengan:
$ bundle
$ ruby test.rb
Penambalan monyet adalah cara yang cacat secara inheren untuk menambal permata kecuali Anda memastikan versi persis dari permata yang Anda tambal digunakan yang merupakan sesuatu yang harus ditegakkan atau setidaknya dideteksi oleh em-synchrony.