L’ARGV de Ruby peut être vide sur Windows en fonction du mode d’exécution du script

Mon demo.rb:

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

Le résultat dépend de la façon dont nous exécutons un script:

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

Pourquoi cela arrive? Et peut-on faire quelque chose avec ça?

EDIT: Merci à toutes les réponses! Voici mes parameters:

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

Donc, ça a l’air bien.

Mais j’ai découvert que

 >demo.rb foo bar 

commence le processus avec une telle ligne de commande:

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

Notez que ce .rb associé à 1.8.6, mais 1.8.7 est démarré.

Donc je suppose que quelque chose d’autre est foiré?

    Ouvrez une fenêtre de commande:

     assoc .rb 

    est-ce que rbFile?

     ftype rbFile 

    Assurez-vous que Ruby.exe est suivi de “% 1″% *

    le% * manque parfois.

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

    Vérifiez l’association de fichier. Surtout dans les parameters avancés, regardez l’action “Ouvrir”. Assurez-vous qu’il y a un% * à la fin de l’action.

    Cette question concerne le Powershell, mais il s’agit essentiellement de la même question. Ma réponse devrait donc donner plus de détails.

    On dirait que les arguments ne sont pas transmis à l’interpréteur Ruby, dans votre association du type de fichier. Reportez – vous à cette section pour savoir comment l’association doit regarder et vérifier la votre.

    Vous pouvez utiliser un outil gratuit de Nirsoft – FileTypesManager – pour append le %* manquant mentionné dans les autres articles.