1

アップデート:

簡単な答えを見つけましたが、それは完全に私自身のせいです。上記のコードを「eventmachine.rb」というファイルに保存しました。したがって、「eventmachine」が必要なときに、EventMachine の定義を含まない同じファイルをインポートしただけです。

したがって、これは実際には EventMachine に関する投稿ではありません。

元の投稿:

すみませんが、何が起こっているのですか?

require 'rubygems'
require 'eventmachine'

EventMachine

与える

uninitialized constant EventMachine

「ruby myfile.rb」を実行すると、TextMate とコンソールの両方で。

しかし、同じことを IRB に入力すると、

=> EventMachine

.

...

私は非常にイライラして、http://blog.carlmercier.com/2007/12/14/how-to-fix-that-rubygems-mess-on-leopard/の無謀な指示に従いました-- 私の Ruby とRubygems 環境と MacPorts からの再インストール。IRB は引き続き機能し、TextMate/コマンドラインは引き続き同じように失敗します。TextMate PATH を、Ruby、Gem、および IRB が現在インストールされている 1 つの場所 (/opt/local/bin) にまで減らしました。

最後に、私が

puts Gem.path

IRB、TextMate、またはコンソールのいずれかで、同じパスを取得します。

4

3 に答える 3

4

簡単な答えを見つけましたが、それは完全に私自身のせいです。上記のコードを「eventmachine.rb」というファイルに保存しました。したがって、「eventmachine」が必要なときに、EventMachine の定義を含まない同じファイルをインポートしただけです。

于 2011-07-16T17:32:24.483 に答える
1

gemをインストールしましたか?

gem install eventmachine

通常、表示するコードでそのようなエラーが発生するのは、行が

require 'eventmachine'

失敗し、そのクラス/モジュール定数 EventMachine が定義されていません。

また、Ruby 1.9 を実行している場合は、もう必要ありません。

require 'rubygems'
于 2011-07-14T22:41:32.403 に答える
0

メッセージが「初期化されていない定数」である理由はわかりませんが、問題は、実行するものが何も提供されていないことです。コードで同じエラーが発生しますが、次のように変更すると:

EventMachine::run{
   EventMachine::add_periodic_timer( 0.1) { 
    print '.'
   }
}

その後、期待どおりに動作します-毎秒10ドットを印刷します。

于 2011-07-15T00:02:14.627 に答える