2009-11-13 2 views
3
ruby somescript.rb somehugelonglistoftextforprocessing 

est-ce une mauvaise idée? est-ce que je devrais plutôt créer un fichier plat séparé contenant la liste de textes de texte pour le traitement, et que le fichier somescript.rb le lise?en passant des arguments plutôt énormes au script ruby, des problèmes?

Est-ce important si l'argument du script est un texte très très long (1KB ~ 300KB)? quels sont les problèmes qui peuvent survenir, le cas échéant.

Répondre

6

Tant que les limites de votre code de gestion de ligne de commande (par exemple, bash ou ruby lui-même) ne sont pas dépassées, vous ne devriez avoir aucun technique des problèmes à faire.

Que ce soit un bonne idée est une autre question. Voulez-vous vraiment avoir à saisir quelques centaines de kilooctets chaque fois que vous exécutez votre programme? Voulez-vous vous rappeler de mettre des guillemets autour de vos données s'il contient des espaces?

Il y a plusieurs façons que j'ai vu ce traité que vous pourriez envisager (cette liste est non exhaustive):

  • Changez votre code afin que, s'il n'y a pas d'arguments, lire les informations d'entrée standard - cela vous permettra de faire soit
          ruby somescript.rb myData
    ou
          ruby somescript.rb <myFile.txt. Utilisez un caractère spécial pour indiquer l'entrée de fichier (j'ai vu @ utilisé de cette manière). Ainsi,
          ruby somescript.rb myData
    utiliseraient les données fournies sur la ligne de commande tout en
          ruby somescript.rb @myFile.txt
    obtiendrait les données du fichier.

Mon conseil serait d'utiliser la méthode basée sur les fichiers pour cette taille de données et d'autoriser l'utilisation d'un argument si cela est spécifié. Cela couvre les deux scénarios possibles:

  • Beaucoup de données, placez-le dans un fichier de sorte que vous n'aurez pas à retaper chaque fois que vous souhaitez exécuter votre commande.
  • Pas beaucoup de données, autorisez-le à passer en argument de sorte que vous n'avez pas besoin de créer un fichier pour quelque chose qui est plus facile à taper dans la ligne de commande.
+0

Deuxième recommandation de paxdiablo. Il y a une bonne discussion de cette approche sur [un autre thread SO] (http://stackoverflow.com/questions/273262/best-practices-with-stdin-in-ruby) qui pourrait être utile –

Questions connexes