You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么简单Ruby代码在irb中运行正常,命令行执行却报错?

问题定位
  • 该报错属于Timeout模块加载相关问题,报错uninitialized constant Foo::Timeout的本质是脚本执行环境中没有加载timeout标准库,无法识别Timeout常量。
  • IRB确实默认预加载了部分普通ruby命令执行脚本时不会默认加载的标准库,timeout就是其中之一,所以同一段代码粘贴到IRB可以正常运行,作为独立脚本执行就会触发未初始化常量报错。
修复方案

在脚本文件的首行添加timeout库的显式引入语句即可,修改后的完整代码如下:

require 'timeout'

class Foo
  def bar
    Timeout.timeout(0.5){
        puts "Interupt this if it takes longer then 0.5 seconds"
    }
  end
end

foo = Foo.new()
foo.bar

修改后再执行ruby ./sample_code.rb即可正常运行。

内容的提问来源于stack exchange,提问作者Paul Verschoor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:06:07