jbbarth's corner

Un shell en ruby ?

Posted by JB on 25/02/10 at 19:00

Dans 4 jours, je vais me faire massacrer tenter un examen interne au boulot, censé valider mes aptitudes de “programmeur système”. Cet examen comporte une épreuve de développement (sur papier, faut pas déconner), que la plupart des gens vont passer en Java ou C/C++. Mais très peu pour moi, j’attaque en Ruby !

Je lis donc des bouquins, qui présentent un squelette de shell en C. Et en Ruby ? Eh bien en fait, contre toute attente, c’est super simple, voici un squelette fonctionnel :

#!/usr/bin/ruby

require 'readline'
require 'open3'

class Rshell
  def initialize
    loop do
      cmd = Readline.readline("$ ")
      exit if cmd.nil? or cmd == "exit"
      Open3.popen3(cmd) do |stdin,stdout,stderr|
        STDOUT.print stdout.read
        STDERR.print stderr.read
      end
    end
  end
end

Rshell.new

Il ne faut pas s’attendre à des miracles, aucun builtin, pas de gestion du PATH, mais on peut passer des commandes, différencier éventuellement STDOUT/STDERR pour le futur.

Ca me donne l’occasion de parler d’un vrai shell en Ruby, utilisé chez Heroku, Rush. J’en reparlerai dès que j’aurai testé ça au quotidien au boulot :)

Hierarchy: previous, next

Comments

There is 1 comment on this post. Post yours →

mom

j"y crois pas
vraiment c’est pire que le chinois ton langage!!!
mais j’ai toujours eu une fierté et une confiance absolue en TOI.
alors ça va aller,puisque tu as fait ce qu’il te semblait bien……….
l’important c’est d’avancer,et j’aime l’idée de passer un examen ‘gratuitement’,comme la gemmologie ,pour ma part….
becs

Post a comment

Required fields in bold.