Ruby加载路径是如何设置的?“$”:&引用;全球的

Ruby加载路径是如何设置的?“$”:&引用;全球的,ruby,load,Ruby,Load,当我使用-I在命令行上设置加载路径时,该路径总是$:数组中的第一项吗 该路径是否可能不是$:数组中的第一项?这主要取决于您使用的Ruby解释器/虚拟机的版本,但通常情况下,这就是-I选项的目的:您应该能够用它覆盖默认的$LOAD\u路径 如果您想使用将应用于其他位置的命令行提供$LOAD\u PATH组件,您可以自由实现自己的命令行选项,例如 require 'getoptlong' opts = GetoptLong.new(['--include', '-I', GetoptLong::R

当我使用-I在命令行上设置加载路径时,该路径总是$:数组中的第一项吗


该路径是否可能不是$:数组中的第一项?

这主要取决于您使用的Ruby解释器/虚拟机的版本,但通常情况下,这就是
-I
选项的目的:您应该能够用它覆盖默认的
$LOAD\u路径

如果您想使用将应用于其他位置的命令行提供
$LOAD\u PATH
组件,您可以自由实现自己的命令行选项,例如

require 'getoptlong'

opts = GetoptLong.new(['--include', '-I', GetoptLong::REQUIRED_ARGUMENT ])

opts.each { |opt, arg|
  $LOAD_PATH << arg if opt == '--include'
}
需要“getoptlong”
opts=GetoptLong.new(['--include','-I',GetoptLong::必选参数])
opts.each{| opt,arg|

$LOAD_PATH不确定,但如果您在脚本顶部移动路径,它将是第一个路径,这是一个非常安全的赌注。除非您的代码稍后会进行更多的移动。您是否了解该语句的可移植性?这取决于您如何定义“可移植”。在Ruby解释器/虚拟机的命令行中使用
-I
,以及使用应用程序本身的一些其他命令行选项(如本例所示),都可以跨操作系统和各种Ruby版本移植。
$LOAD\u PATH
的行为定义良好。但是,我怀疑某些版本(或平台)可能可能缺少命令行(例如,我不确定是否可以在Android平台或S60端口上使用命令行参数启动程序)。