gpt4 book ai didi

ruby - 如何设置程序的工作目录?

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:28 25 4
gpt4 key购买 nike

我在/usr/local/flower 目录中有一个程序 - flower.rb。它需要加载也存在于同一目录中的库。我已将这个 flower 目录包含在我的操作系统环境的路径中。我选择的操作系统是 Ubuntu。

当我从/usr/local/flower 以外的任何其他目录执行 flower.rb 时,我收到错误消息,指示程序无法加载/usr/local/flower 目录中也存在的库 b/c它们作为 ./[library] 从源代码加载。

我知道我可以更改 Ruby 程序以对/usr/local/flower/[libraries] 进行硬编码,但我很好奇是否有办法从我的主目录执行此程序,例如/home/seattle,没有这样做。

此外,当程序执行时,它会通过 -o 开关创建输出。

我的解决方案是创建一个更改为/usr/local/flower 目录的 bash 脚本,执行该程序,然后返回到调用 flower.rb 程序的 PWD 目录。问题是 -o 开关。如果我执行 -o [file],[file] 将写入/usr/local/flower 目录,而不是运行 flower.rb 程序时我所在的位置。

这个问题有什么好的解决方案?

最佳答案

从你的问题来看还不是很清楚,但你似乎错误地使用了 requirerequire 用于从 $LOAD_PATH 加载脚本。如果要加载相对于当前脚本目录的脚本,请使用 require_relative

你应该永远不要加载相对于当前工作目录的脚本。当前工作目录在用户的控制之下,而不是你的脚本。你不知道它会是什么。当前工作目录在 2008 年从 $LOAD_PATH 中删除是有原因的:因为它已损坏。

关于ruby - 如何设置程序的工作目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41230709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com