発生している問題は、次の 3 つのことが原因である可能性があります。
- 使用している Ruby のバージョン
- Ruby 1.9 での SystemTimer gem の使用
- JSON ジェム
以下に詳しくまとめました...
最初にお勧めするのは、Ruby 1.9 のバージョンをアップグレードすることです。最新の安定版は次のとおりです。
ruby 1.9.2p180 (2011-02-18 revision 30909)
Ruby Version Manager (RVM)を使用して Ruby をインストールおよび管理することを強くお勧めします。
JSON gem の使用に関しては、http:
//ruby.about.com/od/tasks/a/The-Json-Gem.htmをご覧ください。
引用するには:
Ruby 1.8.7 では、gem をインストールする必要があります。ただし、Ruby 1.9.2 では、json gem がコア Ruby ディストリビューションにバンドルされています。したがって、1.9.2 を使用している場合は、おそらくすべて設定されています。1.8.7 を使用している場合は、gem をインストールする必要があります。
JSON gem をインストールする前に、まず、この gem が 2 つのバリアントで配布されていることに注意してください。この gem を gem install json でインストールするだけで、C 拡張バリアントがインストールされます。これには C コンパイラをインストールする必要があり、すべてのシステムで利用可能または適切であるとは限りません。ただし、このバージョンをインストールできる場合は、インストールする必要があります。
C 拡張バージョンをインストールできない場合は、代わりに json_pure を gem install する必要があります。これは、純粋な Ruby で実装された同じ gem です。Ruby コードが実行されるすべての場所、すべてのプラットフォーム、さまざまなインタープリターで実行する必要があります。ただし、C 拡張バージョンよりもかなり低速です。
編集:
Ruby 1.9 でSystemTimer gem を使用しないようにする必要があるようです。詳細については、これを参照してください: http://isitruby19.com/systemtimer
フィリップがそのページで行ったコメントを引用するには:
私はこの宝石の (共同) 著者です。短編小説 : Ruby 1.9 でこの gem を使用しても意味がありません。
System Timer は、Ruby 1.8 (MRI) で使用されている「グリーン スレッド」モデルの制限を回避しようとしています。詳細については、 http://ph7spot.com/musings/system-timerを参照してください。
グリーン スレッド モデルを放棄し、ネイティブ スレッドを採用した Ruby 1.9とは無関係です (グローバル インタープリター ロックがまだ存在するため)。
乾杯 - フィリップ