モンキーパッチを適用しようとしているem-hiredisの正しいバージョンが見つかった場合、コードは機能すると思います。これは、依存関係が緩い場合の1つの問題です。
これは完全に機能するコードですが、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
次に、次のコマンドで実行します:
$ bundle
$ ruby test.rb
モンキーパッチは、パッチを適用したgemの正確なバージョンが使用されていることを確認しない限り、本質的に欠陥のあるgemパッチの方法です。これは、em-synchronyが強制するか、少なくとも検出する必要があります。