$ ARGV何时在场?

时间:2014-02-03 19:11:51

标签: ruby

在我的本地计算机上,当运行rake assets:precompile时,MRI和JRuby中都存在$ARGV。在我的部署环境中,它不是。这引起了我的注意,但后来我意识到ARGV存在且更为标准。

当我在本地运行$ARGV时,为什么ARGV设置为rake assets:precompile

1 个答案:

答案 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定义任何内容。