在我的本地计算机上,当运行rake assets:precompile
时,MRI和JRuby中都存在$ARGV
。在我的部署环境中,它不是。这引起了我的注意,但后来我意识到ARGV
存在且更为标准。
当我在本地运行$ARGV
时,为什么ARGV
设置为rake assets:precompile
?
答案 0 :(得分:2)
使用ARGV
。它是一个标准常量,定义为Object的一部分。
以下是“The Ruby Programming Language”中的一些文档:
10.2.2顶级常量
当Ruby解释器启动时,定义了以下顶级常量(除了前面列出的模块和类)。通过相同名称定义常量的模块仍然可以通过使用::明确地为它们添加前缀来访问这些顶级常量。您可以使用以下命令列出实现中的顶级常量:
ruby -e 'puts Module.constants.sort.reject{|x| eval(x.to_s).is_a? Module}'
[...]
ARGV 包含命令行中指定的参数的数组。 $ *。
的同义词
我没有jRuby所以我无法发表评论,但我无法通过MRI在我试过的几个版本中为$ARGV
定义任何内容。