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






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 ?
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