Faire du ruby sur le web sans Rails : Sinatra
By Pierre-Alain B on Sunday, June 12 2011, 17:17 - Permalink
Sinatra peut être considéré comme une boîte à outil web pour Ruby très légère. Si Rails est bourré de fonctionnalités qui rendent la vie facile, il est parfois un peu démesuré d'utiliser Rails quand on veut juste exécuter un script Ruby et en afficher le résultat en ligne.
Une solution plus légère que Rails est Sinatra. [|http://www.sinatrarb.com/||http://www.sinatrarb.com/
Sinatra est un gem à ajouter à l'installation courante de Ruby :
gem install sinatra
On écrit alors le script en spécifiant les routes dans le code, par exemple :
#monApp.rb require 'sinatra' get '/hi' do "Hello World!" end get '/generate/:arg' generate(params[:arg]) end def generate (arg) str="" 5.times { str=str+","+arg } str end
Ce code contient 2 routes : la première qui est appelée sur http://$host/hi et la seconde sur http://$host/generate/text.
On peut exécuter le script de manière locale en exécutant :
ruby -rubygems monApp.rb
(par défaut, le serveur de test est lancé sur http://localhost:4567)
Pour exécuter l'application via Passenger dans Apache, on ajoute dans le répertoire courant : - un dossier public (mkdir public) - un dossier tmp (mkdir tmp) - un fichier config.ru
qui contient par exemple le code suivant :
require 'rubygems' require 'sinatra' require '/path/to/myApp.rb' root_dir = File.dirname(__FILE__) set :environment, ENV['RACK_ENV'].to_sym set :root, root_dir set :app_file, File.join(root_dir, 'myApp.rb') disable :run run Sinatra::Application
On ajoute alors un VirtualHost convenable dans la configuration d'Apache et Passenger sert l'application Sinatra !