2011-07-05 28 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