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

如何在Ruby中实现类似Bash source的函数复用机制?

Ruby实现跨脚本函数调用的正确方法

错误原因说明

你用Bash的source命令加载Ruby脚本是行不通的——source是让当前Shell进程执行脚本内容,但Ruby代码不属于Shell命令语法,Shell无法解析,自然会报错。

两种正确实现方式

场景1:纯Ruby脚本间调用函数

如果是在Ruby脚本里调用另一个Ruby脚本定义的函数,用Ruby的require_relative或load命令加载目标脚本即可:

test1.rb(定义函数)

def doThing
  puts "Doing Thing"
end

test2.rb(调用函数)

# 加载同目录下的test1.rb,相对路径用require_relative更方便
require_relative './test1.rb'

# 直接调用函数
doThing

运行方式:在终端执行 ruby test2.rb,就能输出Doing Thing。

  • require_relative:按当前脚本的相对路径加载文件,加载后不会重复加载(适合复用库脚本)
  • load:每次调用都会重新加载脚本内容(适合需要动态更新代码的场景)

场景2:在Shell脚本中调用Ruby函数

如果要在Shell脚本里调用Ruby定义的函数,需要通过Ruby解释器来执行,不能直接用Shell命令调用。修改test2.sh如下:

test2.sh

ruby -e "require_relative './test1.rb'; doThing"

运行方式:给test2.sh加执行权限(chmod +x test2.sh),然后执行./test2.sh即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:15:08