如何在无环境的Ruby脚本中指定rubygems路径?

2024-02-04

我用 Ruby 为 Cacti 编写了一个数据收集脚本,它在命令行中运行良好butCacti 通过“env -i”运行脚本,该脚本会剥离环境,因此 Ruby 无法找到 ruby​​gems 库(“在‘require’中:没有要加载的文件 - ruby​​gems (LoadError)”)。我该如何解决这个问题?


#!/bin/sh

#export LOAD_PATH=whatever 
#export RUBYLIB=whatever
#export RUBYOPT=whatever
#export RUBYPATH=whatever
#export RUBYSHELL=whatever
#export PATH=$PATH:whatever
exec ruby -x. $0 "$@"

#!/usr/bin/ruby
require 'rubygems'
require 'open4' # or whatever

# rest of ruby script here

这是一个使用 -x 运行 ruby​​ 的 shell 脚本,这将导致解释器跳过行,直到找到#!.*ruby。这将为您提供恢复环境的机会。这. after -x是一个 noop,你可以取出.,或将其替换为目录。 Ruby 将在运行脚本之前 cd 到那里。

我实际上猜测这并不是您真正想要的,因为这可以通过创建两个脚本(一个用于 shell,一个用于 Ruby)而无需任何技巧来完成。也许 Ruby 关心的环境变量列表会有所帮助......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在无环境的Ruby脚本中指定rubygems路径? 的相关文章

随机推荐