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

无需iruby/Jupyter,如何将Ruby脚本与输出保存至同一文件?

可行的简便替代方案

完全理解你不想折腾iruby和Jupyter的心情——有时候我们只需要一个轻量直接的工具,就能把Ruby代码和它的运行结果按irb风格打包到文件里。这里有两个简单的方案,你可以按需选择:

方案一:用系统自带的irb工具快速实现

其实你可以直接用Ruby自带的irb命令,配合一点命令行处理,就能得到想要的输出格式,完全不用额外安装工具。

假设你的hello.rb内容是:

puts "hello world"
2 + 3

只需要在终端运行这条命令:

irb --simple-prompt < hello.rb | sed 's/irb(main):[0-9]*:[0-9]*> /irb > /' > output.txt

这条命令的作用是:

  1. irb --simple-prompt < hello.rb:让irb以简单提示符模式执行hello.rb里的代码,输出包含输入代码和运行结果
  2. sed 's/irb(main):[0-9]*:[0-9]*> /irb > /':把irb默认带的行号(比如irb(main):001:0>)替换成你想要的irb >格式
  3. 最后把结果重定向到output.txt

生成的output.txt内容会和你期望的完全一致:

irb > puts "hello world"
hello world
=> nil
irb > 2+3
=> 5

方案二:自己写一个轻量Ruby脚本(更灵活可控)

如果想要完全自定义输出格式,或者担心依赖外部命令(比如sed),可以自己写一个几十行的小Ruby脚本作为工具,逻辑非常简单:

保存下面的代码为irbliketool.rb:

#!/usr/bin/env ruby

# 检查输入参数
input_file = ARGV.first
unless input_file && File.exist?(input_file)
  puts "Usage: #{$0} <ruby_script.rb>"
  exit 1
end

# 读取脚本内容
code = File.read(input_file)

# 用Ruby的Ripper解析器拆分代码为独立表达式(比简单按行分割更可靠)
require 'ripper'
def extract_expressions(code)
  tokens = Ripper.lex(code)
  expressions = []
  current_expr = []
  tokens.each do |line, col, type, str|
    current_expr << str
    # 遇到换行或分号时,结束当前表达式
    if type == :on_nl || type == :on_semicolon
      expr = current_expr.join.strip
      expressions << expr unless expr.empty?
      current_expr = []
    end
  end
  # 处理最后一个未闭合的表达式
  expr = current_expr.join.strip
  expressions << expr unless expr.empty?
  expressions
end

# 模拟irb风格执行并输出
extract_expressions(code).each do |expr|
  puts "irb > #{expr}"
  begin
    result = eval(expr)
    puts "=> #{result.inspect}"
  rescue => e
    puts "=> #{e.class}: #{e.message}"
  end
end

然后给脚本添加执行权限:

chmod +x irbliketool.rb

之后就可以像你期望的那样使用:

./irbliketool.rb hello.rb > output.txt

这个脚本的好处是:

  • 可以自由修改输出格式(比如调整提示符样式)
  • 用Ruby的解析器拆分表达式,比简单按行分割更准确(比如处理跨多行的表达式)
  • 自带错误处理,执行出错时会输出错误信息

⚠️ 注意:因为脚本用了eval,只用来处理你自己编写的、信任的Ruby代码,不要用它执行未知来源的脚本,避免安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:19:33