Ruby est très développé et très bien document lorsqu’il s’agit de développer des applications web.
Mais parce qu’il n’y a pas que le web dans la vie (ah bon ???), il peut être utile, même dans le cas du développement web, de mettre en place des applications console.

Par console, j’entends sans aucune interface graphique. Celles-ci sont encore un autre sujet.

Du coup en faisant quelques recherches, j’ai découvert SimpleConsole, qui est justement un framework de développement d’applications console simples.
Et en plus il gère un (semblant) de MVC.

Votre application va donc se diviser en deux parties.
Supposons un fichier « myapp.rb », avec le code suivant :
#!/usr/bin/env ruby -w
require 'rubygems'
require 'simpleconsole'
require 'views/myapp'

class Controller < SimpleConsole::Controller
  params :string => {:n => :name, :w => :word}

  def default
    @name = params[:name]
    @word = params[:word]
  end
end

SimpleConsole::Application.run(ARGV, Controller, View)

Puis un fichier views/myapp.rb
class View < SimpleConsole::View
  def default
    puts "Your name is " + @name + "."
    puts "You wanted me to say the word " + @word + "."
  end
end

Si vous exécutez
ruby myapp.rb -name Damien -w Yay

La console vous retournera alors :

Your name is Damien.
You wanted me to say the word Yay.

Le code est tout d'abord interprété par le contrôleur pour ensuite être transmis à la vue, qui renvoie le contenu que vous désirez.
C'est du pseudo MVC et la chose serait largement améliorable.

Mais c'est un bon début pour une application console qui se doit d'être simple.
Et puis vu que l'application ne semble plus maintenue, il est possible que je la forke et que je fasse quelques commits dessus ;)

2 Réponses à “Parce que Ruby c'est pas que du web”

  1. sphax3d dit :

    Merci bien pour cette petite présentation (et les précédentes), cela me permet de m’initier à Ruby :-)

    Je souhaitais simplement signaler que la console me renvoie l’erreur suivante :
    /usr/lib/ruby/gems/1.8/gems/simpleconsole-0.1.1/lib/application.rb:45:in `run’: undefined method `default’ for # (NoMethodError) from myapp.rb:21

    Il faut apparemment définir la méthode ‘default’ et non ‘print’ pour que ça fonctionne… peut-être à cause d’une différence de version ?

  2. Damien dit :

    En effet. J’avais eu le même problème en testant mon application en local. Et j’ai oublié de le corriger en rédigeant cet article à partir des exemples donnés sur le site.
    C’est chose faite. Merci :)

Laisser une réponse

 
Fork me on GitHub