Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby's ARGV can be empty on windows depending on a way to run script

Tags:

ruby

argv

My demo.rb:

puts ARGV.size

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

The result depends on how we run a script:

> demo.rb foo bar
0

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

Why this happens? And can some thing be done with this?

EDIT: Thanks to all replies! Here my settings:

>assoc .rb
.rb=rbFile

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

So it looks right.

But I have discovered that

>demo.rb foo bar

starts process with such Command Line:

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

Notice, that .rb associated with 1.8.6, but 1.8.7 is started.

So I guess some thing else is messed up?

like image 712
alex2k8 Avatar asked Aug 27 '09 13:08

alex2k8


3 Answers

Open a command window:

assoc .rb

is it rbFile?

ftype rbFile

Make sure that Ruby.exe is followed by "%1" %*

the %* is sometimes missing.

like image 164
Jonas Elfström Avatar answered Nov 12 '22 20:11

Jonas Elfström


C:\Temp> ftype | grep ruby
rbFile="c:\opt\ruby\bin\ruby.exe" "%1" %*
rbwFile="c:\opt\ruby\bin\rubyw.exe" "%1" %*
like image 24
Sinan Ünür Avatar answered Nov 12 '22 20:11

Sinan Ünür


Check the file association. Especially in the advanced settings look at the "Open" action. Make sure that there is a %* on the end of the action.

This question is about powershell, but it is essentially the same question so my answer there should give a little more detail.

like image 31
EBGreen Avatar answered Nov 12 '22 22:11

EBGreen