2011-07-05 27 views
2

我試圖使用GUID產生在我的Ruby項目唯一的ID。這是我創建的示例ruby文件,用於測試其功能:的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' 

操作系統的類型很顯然,你的情況(64位Windows 7),檢查失敗(RUBY_PLATFORM否則返回的東西(如I386-的mingw32我Ruby 1.9的安裝Windows7的上64位)),並嘗試使用Unix的代碼,然後試圖打開/ dev/urandom的 - 失敗。

所以,你可以檢查什麼RUBY_PLATFORM您的操作系統返回,modifiy的guid.rb源代碼,併發送一個補丁給開發者,使他們能夠解決這個問題。

+0

你說得對。我已經對32位和64位機器進行了更改。萬分感謝。 – dkulkarni