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.