2009-08-27 5 views
6

Moje demo.rb:Ruby może być pusta na okna w zależności od sposobu, aby uruchomić skrypt

puts ARGV.size 

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

wynik zależy od tego, jak uruchomić skrypt:

> demo.rb foo bar 
0 

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

Dlaczego tak się dzieje? Czy można coś z tym zrobić?

EDYTOWANIE: Dziękuję za wszystkie odpowiedzi! Tutaj moje ustawienia:

>assoc .rb 
.rb=rbFile 

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

Tak wygląda prawidłowo.

Ale odkryłem, że

>demo.rb foo bar 

rozpoczyna proces z takiej linii komend:

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

Zauważ, że .rb związane z 1.8.6, ale 1.8.7 jest uruchomiona.

Zgaduję, że coś jeszcze jest popsute?

Odpowiedz

2

Sprawdź powiązanie plików. Zwłaszcza w zaawansowanych ustawieniach spójrz na akcję "Otwórz". Upewnij się, że na końcu akcji znajduje się% *.

This Pytanie dotyczy firmy powershell, ale jest to w zasadzie to samo pytanie, więc moja odpowiedź powinna podać trochę więcej szczegółów.

1

Wygląda na to, że argumenty nie są przekazywane interpreterowi rubinowi w skojarzeniu z typem pliku. Zobacz, jak stowarzyszenie powinno wyglądać i zweryfikuj swoje.

8

Otwórz okno poleceń:

assoc .rb 

jest rbFile?

ftype rbFile 

Upewnij się, że Ruby.exe następuje "% 1" % *

folderze% * jest czasami brakuje.

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