2009-08-27 9 views
6

mio demo.rb:di Ruby può essere vuoto sulle finestre a seconda di un modo per eseguire lo script

puts ARGV.size 

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

Il risultato dipende da come si esegue uno script:

> demo.rb foo bar 
0 

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

Perché questo accade? E si può fare qualcosa con questo?

MODIFICA: Grazie a tutte le risposte! Qui le mie impostazioni:

>assoc .rb 
.rb=rbFile 

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

Così sembra giusto.

Ma ho scoperto che

>demo.rb foo bar 

processo inizia con tale linea di comando: viene avviato

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

Avviso, che .RB associata a 1.8.6, ma 1.8.7.

Quindi immagino che qualcos'altro sia incasinato?

risposta

2

Verificare l'associazione file. Soprattutto nelle impostazioni avanzate guarda l'azione "Apri". Assicurati che ci sia un% * alla fine dell'azione.

This domanda riguarda PowerShell, ma è essenzialmente la stessa domanda, quindi la mia risposta dovrebbe dare un po 'più di dettaglio.

1

Sembra che gli argomenti non vengano trasmessi all'interprete Ruby, nella propria associazione del tipo di file. Vedi this section per come dovrebbe apparire l'associazione, e verifica il tuo.

8

Aprire una finestra di comando:

assoc .rb 

è rbFile?

ftype rbFile 

Assicurarsi che Ruby.exe è seguito da "% 1" % *

l'% * è a volte manca.

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