1
0
Fork 0
mirror of https://github.com/sinatra/sinatra synced 2023-03-27 23:18:01 -04:00

French README update.

Signed-off-by: Konstantin Haase <konstantin.mailinglists@googlemail.com>
This commit is contained in:
Sylvain Desvé 2011-04-05 23:20:17 +02:00 committed by Konstantin Haase
parent 54fb37fd9a
commit 644c26e287

View file

@ -36,6 +36,10 @@ Chaque route est associée à un bloc:
end end
put '/' do put '/' do
.. remplacer quelque chose ..
end
patch '/' do
.. changer quelque chose .. .. changer quelque chose ..
end end
@ -842,6 +846,19 @@ choix comme vous le feriez pour n'importe quel autre +middleware+ :
session[:valeur] = params[:valeur] session[:valeur] = params[:valeur]
end end
Pour renforcer la sécurité, les données de session dans le cookie sont signées
avec une clé secrète de session. Une clé secrète est générée pour vous au
hasard par Sinatra. Toutefois, comme cette clé change à chaque démarrage de
votre application, vous pouvez définir cette clé vous-même afin que toutes
les instances de votre application la partage:
set :session_secret, 'super secret'
Si vous souhaitez avoir plus de contrôle, vous pouvez également enregistrer un
+hash+ avec des options lors de la configuration de +sessions+:
set :sessions, :domain => 'foo.com'
== Halt == Halt
Pour arrêter immédiatement la requête dans un filtre ou un gestionnaire de Pour arrêter immédiatement la requête dans un filtre ou un gestionnaire de
@ -948,6 +965,31 @@ retour et les entêtes :
Comme +body+, +headers+ et +status+ peuvent être utilisés sans arguments Comme +body+, +headers+ et +status+ peuvent être utilisés sans arguments
pour accéder à leurs valeurs. pour accéder à leurs valeurs.
=== Journalisation (Logging)
Dans le contexte de la requête, la méthode utilitaire +logger+ expose une
instance de +logger+:
get '/' do
logger.info "chargement des données"
# ...
end
Ce +logger+ va automatiquement prendre en compte les paramètres de
configuration pour la journalisation de votre gestionnaire Rack. Si la
journalisation est désactivée, cette méthode renverra un objet factice et
vous n'avez pas à vous en inquiéter dans vos routes en le filtrant.
Notez que la journalisation est seulement activée par défaut pour
<tt>Sinatra::Application</tt>, donc si vous héritez de <tt>Sinatra::Base</tt>,
vous aurez à l'activer vous-même:
class MonApp < Sinatra::Base
configure(:production, :development) do
enable :logging
end
end
=== Types Mime === Types Mime
Quand vous utilisez <tt>send_file</tt> ou des fichiers statiques, vous Quand vous utilisez <tt>send_file</tt> ou des fichiers statiques, vous
@ -1121,32 +1163,36 @@ de la requête (filtres, routes, gestionnaires d'erreur) au moyen de la méthode
# application tournant à l'adresse http://exemple.com/exemple # application tournant à l'adresse http://exemple.com/exemple
get '/foo' do get '/foo' do
request.body # corps de la requête envoyée par le client t = %w[text/css text/html application/javascript]
# (voir ci-dessous) request.accept # ['text/html', '*/*']
request.scheme # "http" request.accept? 'text/xml' # true
request.script_name # "/exemple" request.preferred_type(t) # 'text/html'
request.path_info # "/foo" request.body # corps de la requête envoyée par le client
request.port # 80 # (voir ci-dessous)
request.request_method # "GET" request.scheme # "http"
request.query_string # "" request.script_name # "/exemple"
request.content_length # taille de request.body request.path_info # "/foo"
request.media_type # type de média pour request.body request.port # 80
request.host # "exemple.com" request.request_method # "GET"
request.get? # true (méthodes similaires pour les autres request.query_string # ""
# verbes HTTP) request.content_length # taille de request.body
request.form_data? # false request.media_type # type de média pour request.body
request["UN_ENTETE"] # valeur de l'entête UN_ENTETE request.host # "exemple.com"
request.referer # référant du client ou '/' request.get? # true (méthodes similaires pour les autres
request.user_agent # user agent (utilisé par la condition :agent) # verbes HTTP)
request.cookies # tableau contenant les cookies du navigateur request.form_data? # false
request.xhr? # requête AJAX ? request["UN_ENTETE"] # valeur de l'entête UN_ENTETE
request.url # "http://exemple.com/exemple/foo" request.referer # référant du client ou '/'
request.path # "/exemple/foo" request.user_agent # user agent (utilisé par la condition :agent)
request.ip # adresse IP du client request.cookies # tableau contenant les cookies du navigateur
request.secure? # false request.xhr? # requête AJAX ?
request.forwarded? # vrai (si on est derrière un proxy inverse) request.url # "http://exemple.com/exemple/foo"
request.env # tableau brut de l'environnement fourni par request.path # "/exemple/foo"
# Rack request.ip # adresse IP du client
request.secure? # false
request.forwarded? # vrai (si on est derrière un proxy inverse)
request.env # tableau brut de l'environnement fourni par
# Rack
end end
Certaines options, telles que <tt>script_name</tt> ou <tt>path_info</tt> Certaines options, telles que <tt>script_name</tt> ou <tt>path_info</tt>
@ -1339,9 +1385,7 @@ Vous pouvez accéder à ces paramètres via <tt>settings</tt> :
[public] dossier duquel les fichiers publics sont servis [public] dossier duquel les fichiers publics sont servis
[reload_templates] si oui ou non les templates doivent être rechargés [reload_templates] si oui ou non les templates doivent être rechargés
entre les requêtes. Activé en mode développement entre les requêtes. Activé en mode développement.
et sur Ruby 1.8.6 (pour compenser un bug Ruby
occasionnant une fuite de mémoire).
[root] dossier racine du projet. [root] dossier racine du projet.
@ -1669,6 +1713,46 @@ application Sinatra, ou n'importe quelle application basée sur Rack
get('/') { "Bonjour #{session['nom_utilisateur']}." } get('/') { "Bonjour #{session['nom_utilisateur']}." }
end end
=== Création dynamique d'applications
Il se peut que vous ayez besoin de créer une nouvelle application à l'exécution
sans avoir à les assigner à une constante, vous pouvez le faire grâce à
`Sinatra.new`:
require 'sinatra/base'
mon_app = Sinatra.new { get('/') { "salut" } }
mon_app.run!
L'application dont elle hérite peut être passé en argument optionnel:
require 'sinatra/base'
controleur = Sinatra.new do
enable :logging
helpers MyHelpers
end
map('/a') do
run Sinatra.new(controleur) { get('/') { 'a' } }
end
map('/b') do
run Sinatra.new(controleur) { get('/') { 'b' } }
end
C'est notamment utile pour tester des extensions à Sinatra ou bien pour
utiliser Sinatra dans votre propre bibliothèque.
Cela permet également d'utiliser très facilement Sinatra comme middleware:
require 'sinatra/base'
use Sinatra do
get('/') { ... }
end
run RailsProject::Application
== Contextes et Binding == Contextes et Binding
Le contexte dans lequel vous êtes détermine les méthodes et variables Le contexte dans lequel vous êtes détermine les méthodes et variables
@ -1702,6 +1786,7 @@ Vous avez le binding du contexte de l'application dans:
* Les méthodes définies par les extensions * Les méthodes définies par les extensions
* Le bloc passé à `helpers` * Le bloc passé à `helpers`
* Les procs/blocs utilisés comme argument pour `set` * Les procs/blocs utilisés comme argument pour `set`
* Le bloc passé à <tt>Sinatra.new</tt>
Vous pouvez atteindre ce contexte (donc la classe) de la façon suivante: Vous pouvez atteindre ce contexte (donc la classe) de la façon suivante:
@ -1776,21 +1861,8 @@ Les options sont:
== Configuration nécessaire == Configuration nécessaire
Il est recommandé d'installer Sinatra sur Ruby 1.8.7, 1.9.2, JRuby ou
Rubinius.
Les versions suivantes de Ruby sont officiellement supportées : Les versions suivantes de Ruby sont officiellement supportées :
[ Ruby 1.8.6 ]
Il n'est pas recommandé d'utiliser 1.8.6 pour Sinatra. Toutefois, ce sera
officiellement supporté jusqu'à l'arrivée Sinatra 1.3.0. Les templates RDoc
et CoffeeScript ne sont pas supportés par cette version de Ruby. 1.8.6
contient un défaut majeur de fuite de mémoire dans l'implémentation de Hash,
qui est déclenché par les versions de Sinatra antérieure à 1.1.1. La version
actuelle prévient explicitement ce risque au prix de la performance. Vous
devrez utiliser Rack 1.1.x dans la mesure où Rack >= 1.2 ne supporte plus
1.8.6.
[ Ruby 1.8.7 ] [ Ruby 1.8.7 ]
1.8.7 est complètement supporté, toutefois si rien ne vous y retient, nous 1.8.7 est complètement supporté, toutefois si rien ne vous y retient, nous
vous recommandons de passer à 1.9.2 ou bien de passer à JRuby ou Rubinius. vous recommandons de passer à 1.9.2 ou bien de passer à JRuby ou Rubinius.
@ -1801,14 +1873,18 @@ Les versions suivantes de Ruby sont officiellement supportées :
réputé causer des erreurs de segmentation lorque Sinatra est utilisé. réputé causer des erreurs de segmentation lorque Sinatra est utilisé.
[ Rubinius ] [ Rubinius ]
Rubinius est officiellement supporté (Rubinius >= 1.2.2), à l'exception Rubinius est officiellement supporté (Rubinius >= 1.2.3), tout fonctionne,
des templates Textile. y compris tous les langages de template.
[ JRuby ] [ JRuby ]
JRuby est officiellement supporté (JRuby >= 1.5.6). Aucune anomalie avec JRuby est officiellement supporté (JRuby >= 1.6.0). Aucune anomalie avec
des bibliothèques de templates tierces ne sont connues. Toutefois, si vous des bibliothèques de templates tierces ne sont connues. Toutefois, si vous
choisissez JRuby, alors tournez vous vers des gestionnaires Rack JRuby car choisissez JRuby, alors tournez vous vers des gestionnaires Rack JRuby car
le serveur Thin n'est pas (encore) supporté par JRuby. le serveur Thin n'est pas complètement supporté par JRuby. Le support des
extensions C dans JRuby est encore expérimental, ce qui n'affecte que
RDiscount.
<b>Ruby 1.8.6 n'est plus supporté.</b>
Nous gardons également un oeil sur les versions Ruby à venir. Nous gardons également un oeil sur les versions Ruby à venir.
@ -1816,15 +1892,18 @@ Les implémentations Ruby suivantes ne sont pas officiellement supportées mais
sont toujours connues comme permettant à Sinatra de fonctionner : sont toujours connues comme permettant à Sinatra de fonctionner :
* Plus anciennes versions de JRuby et Rubinius * Plus anciennes versions de JRuby et Rubinius
* MacRuby * MacRuby, Maglev, IronRuby
* Maglev
* IronRuby
* Ruby 1.9.0 et 1.9.1 * Ruby 1.9.0 et 1.9.1
* Ruby 1.8.6 avec {backports}[https://github.com/marcandre/backports/#readme]
Ne pas être officiellement supporté signifie que si les choses se passent mal Ne pas être officiellement supporté signifie que si les choses se passent mal
sur ces plateformes et non sur celles supportées, nous considérons que sur ces plateformes et non sur celles supportées, nous considérons que
l'anomalie est de le ressort, pas du nôtre. l'anomalie est de le ressort, pas du nôtre.
Nous faisons également notre intégration continue (CI) avec ruby-head (la
future 1.9.3), mais nous ne pouvons rien garantir étant donné que c'est
constant mouvement. Vous pouvez vous attendre à ce que 1.9.3p0 soit supporté.
Sinatra devrait fonctionner sur n'importe quel système d'exploitation Sinatra devrait fonctionner sur n'importe quel système d'exploitation
supportant l'implémentation Ruby choisie. supportant l'implémentation Ruby choisie.