Guid导致“找不到随机设备”

时间:2011-07-05 08:26:05

标签: ruby random guid device

我正在尝试使用Guid在我的Ruby项目中生成唯一ID。这是我为测试其功能而创建的示例ruby文件:

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。

1 个答案:

答案 0 :(得分:3)

根据http://www.koders.com/ruby/fid47791138EC0592EEEF2FC1F55408231838DF7CA4.aspx?s=game,guid源代码通过

检查操作系统的类型
if RUBY_PLATFORM =~ /win/i
    module Guid_Win32_
        require 'Win32API'

显然,在您的情况下(Windows 7 64位),此检查失败(RUBY_PLATFORM返回其他内容(例如i386-mingw32用于我在Windows7 64bit上的Ruby 1.9安装)),并尝试使用Unix代码,然后尝试打开/ dev / urandom - 这失败了。

因此,您可以查看RUBY_PLATFORM在您的操作系统上返回的内容,修改guid.rb源代码并向开发人员发送修补程序,以便他们可以修复它。