2011-07-05 19 views
2

Guidを使用してRubyプロジェクトでユニークなIDを生成しようとしています。これは、その機能をテストするために作成したサンプルのルビーファイルです。Guidによって「ランダムなデバイスが見つかりません」というメッセージが表示される

require 'guid' 
g = Guid.new 
puts g  

このファイルを実行すると、このエラーが発生します。

E:/Apps/Ruby186/lib/ruby/site_ruby/1.8/guid.rb:67:in `initialize': Can't find random device (Runtime Error) 
from guid_test.rb:3:in `new' 
from guid_test.rb:3 

これにはどのような原因が考えられますか? 私はWindows 7(64ビット)マシンでRubyを使用しています。

答えて

3

http://www.koders.com/ruby/fid47791138EC0592EEEF2FC1F55408231838DF7CA4.aspx?s=gameによると、GUIDのソースコードは

if RUBY_PLATFORM =~ /win/i 
    module Guid_Win32_ 
     require 'Win32API' 

経由でOSの種類をチェックどうやら、あなたの場合(Windows 7の64ビット版)には、このチェックは(RUBY_PLATFORMは何か他のもの(例えばI386-MINGW32を返します。失敗しました私のRuby 1.9のWindows7 64bitでのインストールの場合))、Unixコードを使用しようとすると、/ dev/urandomを開こうとします。これは失敗します。

OS上でRUBY_PLATFORMが返すものを確認し、guid.rbソースコードを修正し、修正可能なように開発者にパッチを送ってください。

+0

あなたはそうです。 32ビットマシンと64ビットマシンで動作するように変更しました。ありがとう、トン。 – dkulkarni

関連する問題