【问题标题】:Guid causes "Can't find random device"Guid 导致“找不到随机设备”
【发布时间】:2011-07-05 08:26:05
【问题描述】:

我正在尝试使用 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。

【问题讨论】:

    标签: ruby random guid device


    【解决方案1】:

    根据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 64 位上安装的 Ruby 1.9)),它尝试使用 Unix 代码,然后尝试打开 /dev/urandom - 这失败了。

    因此,您可以检查 RUBY_PLATFORM 在您的操作系统上返回什么,修改 guid.rb 源代码并将补丁发送给开发人员以便他们修复它。

    【讨论】:

    • 你是对的。我已经进行了更改以适用于 32 位和 64 位机器。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多