我正在尝试使用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。
答案 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源代码并向开发人员发送修补程序,以便他们可以修复它。