Ruby的ARGV在Windows上可能是空的,具体取决于运行脚本的方式

时间:2009-08-27 13:48:51

标签: ruby argv

我的demo.rb:

puts ARGV.size

ARGV.each do |a|
  puts "Argument: #{a}"
end

结果取决于我们如何运行脚本:

> demo.rb foo bar
0

> ruby demo.rb foo bar
2
Argument: foo
Argument: bar

为什么会这样?并且可以做一些事情吗?

修改   感谢所有回复!我的设置在这里:

>assoc .rb
.rb=rbFile

>ftype rbFile
rbFile="c:\ruby-1.8.6\bin\ruby.exe" "%1" %*

所以看起来是正确的。

但我发现了

>demo.rb foo bar

使用这样的命令行启动进程:

"C:\ruby-1.8.7\bin\ruby.exe" "c:\demo.rb"

请注意,.rb与1.8.6相关联,但1.8.7已启动。

所以我猜其他的东西搞砸了?

5 个答案:

答案 0 :(得分:8)

打开命令窗口:

assoc .rb

是rbFile吗?

ftype rbFile

确保Ruby.exe后跟“%1”%*

%*有时会丢失。

答案 1 :(得分:3)

C:\Temp> ftype | grep ruby
rbFile="c:\opt\ruby\bin\ruby.exe" "%1" %*
rbwFile="c:\opt\ruby\bin\rubyw.exe" "%1" %*

答案 2 :(得分:2)

检查文件关联。特别是在高级设置中查看“打开”操作。确保操作结束时有%*。

This问题是关于powershell的问题,但它本质上是同一个问题所以我的答案应该给出更多细节。

答案 3 :(得分:1)

在你的文件类型关联中,声音不会传递给ruby解释器。请参阅this section了解关联的外观,并验证您的关联。

答案 4 :(得分:0)

您可以使用Nirsoft - FileTypesManager中的免费软件工具添加其他帖子中提到的缺失的%*