mirror of
https://github.com/sinatra/sinatra
synced 2023-03-27 23:18:01 -04:00
commit
205fe10ff3
1 changed files with 52 additions and 42 deletions
|
@ -1,4 +1,4 @@
|
||||||
= Sinatra
|
= Sinatra
|
||||||
<i>Attention : Ce document correspond à la traduction de la version anglaise et
|
<i>Attention : Ce document correspond à la traduction de la version anglaise et
|
||||||
il n'est peut être plus à jour.</i>
|
il n'est peut être plus à jour.</i>
|
||||||
|
|
||||||
|
@ -101,6 +101,12 @@ Là encore on peut utiliser les paramètres de bloc :
|
||||||
"Bonjour, #{c} !"
|
"Bonjour, #{c} !"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Les routes peuvent aussi comporter des paramètres optionnels :
|
||||||
|
|
||||||
|
get '/posts.?:format?' do
|
||||||
|
# répond à "GET /posts" et aussi à "GET /posts.json", "GET /posts.xml" etc...
|
||||||
|
end
|
||||||
|
|
||||||
=== Conditions
|
=== Conditions
|
||||||
|
|
||||||
Les routes peuvent définir toutes sortes de conditions, comme par exemple le
|
Les routes peuvent définir toutes sortes de conditions, comme par exemple le
|
||||||
|
@ -213,45 +219,49 @@ Ou bien en utilisant la forme négative :
|
||||||
|
|
||||||
== Fichiers statiques
|
== Fichiers statiques
|
||||||
|
|
||||||
Par défaut, le dossier <tt>./public</tt> est utilisé pour servir les fichiers
|
Les fichiers du dossier <tt>./public</tt> sont servis de façon statique. Vous
|
||||||
statiques. Vous pouvez changer ce dossier pour un autre nom grâce au paramètre
|
avez la possibilité d'utiliser un autre répertoire en définissant le paramètre
|
||||||
<tt>:public_folder</tt> :
|
<tt>:public_folder</tt> :
|
||||||
|
|
||||||
set :public_folder, File.dirname(__FILE__) + '/statique'
|
set :public_folder, File.dirname(__FILE__) + '/statique'
|
||||||
|
|
||||||
Notez que le nom du dossier public n'est pas inclus dans l'URL. Un fichier
|
Notez que le nom du dossier public n'apparait pas dans l'URL. Le fichier
|
||||||
sous <tt>./public/css/style.css</tt> est appelé avec l'URL : <tt>http://exemple.com/css/style.css</tt>.
|
<tt>./public/css/style.css</tt> sera appelé via l'URL :
|
||||||
|
<tt>http://exemple.com/css/style.css</tt>.
|
||||||
|
|
||||||
|
Utilisez le paramètre <tt>:static_cache_control</tt> pour ajouter l'information
|
||||||
|
d'en-tête <tt>Cache-Control</tt> (voir plus loin).
|
||||||
|
|
||||||
== Vues / Templates
|
== Vues / Templates
|
||||||
|
|
||||||
Chaque langage de template est exposé via sa propre méthode de rendu.
|
Chaqie langage de template est disponible via sa propre méthode de rendu,
|
||||||
Ces méthodes retournent tout simplement une chaîne de caractères.
|
lesquelles renvoient tout simplement une chaîne de caractères.
|
||||||
|
|
||||||
get '/' do
|
get '/' do
|
||||||
erb :index
|
erb :index
|
||||||
end
|
end
|
||||||
|
|
||||||
Ceci effectue le rendu de <tt>views/index.erb</tt>.
|
Ceci effectue le rendu de la vue <tt>views/index.erb</tt>.
|
||||||
|
|
||||||
Plutôt que le nom d'un template, vous pouvez directement passer le contenu du
|
Plutôt que d'utiliser le nom d'un template, vous pouvez directement passer
|
||||||
template :
|
le contenu du template :
|
||||||
|
|
||||||
get '/' do
|
get '/' do
|
||||||
code = "<%= Time.now %>"
|
code = "<%= Time.now %>"
|
||||||
erb code
|
erb code
|
||||||
end
|
end
|
||||||
|
|
||||||
Les templates prennent un second paramètre, un hash d'options :
|
Les méthodes de templates acceptent un second paramètre, un hash d'options :
|
||||||
|
|
||||||
get '/' do
|
get '/' do
|
||||||
erb :index, :layout => :post
|
erb :index, :layout => :post
|
||||||
end
|
end
|
||||||
|
|
||||||
Cecie effectue le rendu de <tt>views/index.erb</tt> embarqué dans
|
Ceci effectuera le rendu de la vue <tt>views/index.erb</tt> en l'intégrant
|
||||||
<tt>views/post.erb</tt> (<tt>views/layout.erb</tt> est la valeur par défaut
|
au +layout+ <tt>views/post.erb</tt> (les vues Erb sont intégrées par défaut
|
||||||
si ce fichier existe).
|
au +layout+ <tt>views/layout.erb</tt> quand ce fichier existe).
|
||||||
|
|
||||||
Toute option que Sinatra ne comprends pas sera passée au moteur de rendu :
|
Toute option que Sinatra ne comprend pas sera passée au moteur de rendu :
|
||||||
|
|
||||||
get '/' do
|
get '/' do
|
||||||
haml :index, :format => :html5
|
haml :index, :format => :html5
|
||||||
|
@ -286,8 +296,8 @@ Options disponibles :
|
||||||
|
|
||||||
[layout]
|
[layout]
|
||||||
S'il faut ou non utiliser un +layout+ (+true+ or +false+). Indique le
|
S'il faut ou non utiliser un +layout+ (+true+ or +false+). Indique le
|
||||||
template à utiliser lorsque c'est un Symbol. Exemple : <tt>erb :index,
|
template à utiliser lorsque c'est un symbole. Exemple : <tt>erb :index,
|
||||||
:layout => request.xhr?</tt>.
|
:layout => !request.xhr?</tt>.
|
||||||
|
|
||||||
[content_type]
|
[content_type]
|
||||||
Content-Type que le template produit, dépend par défaut du langage de
|
Content-Type que le template produit, dépend par défaut du langage de
|
||||||
|
@ -308,17 +318,17 @@ Les templates sont supposés se trouver directement dans le dossier
|
||||||
|
|
||||||
set :views, settings.root + '/templates'
|
set :views, settings.root + '/templates'
|
||||||
|
|
||||||
Il est important de noter que les templates sont toujours référencés
|
Il est important de se souvenir que les templates sont toujours référencés
|
||||||
sous forme de symboles, même s'il s'agit d'un sous-répertoire (dans ce
|
sous forme de symboles, même lorsqu'ils sont dans un sous-répertoire (dans
|
||||||
cas, utilisez <tt>:'sous_repertoire/template'</tt>). Vous devez utiliser un
|
ce cas, utilisez <tt>:'sous_repertoire/template'</tt>). Il faut utiliser
|
||||||
symbole car les méthodes de rendu évalueront le contenu des chaînes de
|
un symbole car les méthodes de rendu évaluent le contenu des chaînes de
|
||||||
caractères au lieu de les considérer comme un chemin vers un fichier.
|
caractères au lieu de les considérer comme un chemin vers un fichier.
|
||||||
|
|
||||||
=== Langages de template disponibles
|
=== Langages de template disponibles
|
||||||
|
|
||||||
Certains langages ont plusieurs implémentations. Pour préciser l'implémentation
|
Certains langages ont plusieurs implémentations. Pour préciser l'implémentation
|
||||||
à utiliser (et garantir l'aspect thread-safe), vous devriez simplement la
|
à utiliser (et garantir l'aspect thread-safe), vous devez simplement l'avoir
|
||||||
charger au préalable :
|
chargée au préalable :
|
||||||
|
|
||||||
require 'rdiscount' # ou require 'bluecloth'
|
require 'rdiscount' # ou require 'bluecloth'
|
||||||
get('/') { markdown :index }
|
get('/') { markdown :index }
|
||||||
|
@ -333,7 +343,7 @@ Exemple:: <tt>haml :index, :format => :html5</tt>
|
||||||
|
|
||||||
Dépendances:: {erubis}[http://www.kuwata-lab.com/erubis/] ou
|
Dépendances:: {erubis}[http://www.kuwata-lab.com/erubis/] ou
|
||||||
erb (inclus avec Ruby)
|
erb (inclus avec Ruby)
|
||||||
Extensions de fichier:: <tt>.erb</tt>, <tt>.rhtml</tt> or <tt>.erubis</tt>
|
Extensions de fichier:: <tt>.erb</tt>, <tt>.rhtml</tt> ou <tt>.erubis</tt>
|
||||||
(Erubis seulement)
|
(Erubis seulement)
|
||||||
Exemple:: <tt>erb :index</tt>
|
Exemple:: <tt>erb :index</tt>
|
||||||
|
|
||||||
|
@ -341,7 +351,7 @@ Exemple:: <tt>erb :index</tt>
|
||||||
|
|
||||||
Dépendances:: {builder}[http://builder.rubyforge.org/]
|
Dépendances:: {builder}[http://builder.rubyforge.org/]
|
||||||
Extensions de fichier:: <tt>.builder</tt>
|
Extensions de fichier:: <tt>.builder</tt>
|
||||||
Exemple:: <tt>builder { |xml| xml.em "hi" }</tt>
|
Exemple:: <tt>builder { |xml| xml.em "salut" }</tt>
|
||||||
|
|
||||||
Ce moteur accepte également un bloc pour des templates en ligne (voir exemple).
|
Ce moteur accepte également un bloc pour des templates en ligne (voir exemple).
|
||||||
|
|
||||||
|
@ -349,7 +359,7 @@ Ce moteur accepte également un bloc pour des templates en ligne (voir exemple).
|
||||||
|
|
||||||
Dépendances:: {nokogiri}[http://nokogiri.org/]
|
Dépendances:: {nokogiri}[http://nokogiri.org/]
|
||||||
Extensions de fichier:: <tt>.nokogiri</tt>
|
Extensions de fichier:: <tt>.nokogiri</tt>
|
||||||
Exemple:: <tt>builder { |xml| xml.em "hi" }</tt>
|
Exemple:: <tt>builder { |xml| xml.em "salut" }</tt>
|
||||||
|
|
||||||
Ce moteur accepte également un bloc pour des templates en ligne (voir exemple).
|
Ce moteur accepte également un bloc pour des templates en ligne (voir exemple).
|
||||||
|
|
||||||
|
@ -387,10 +397,10 @@ Dépendances:: {rdiscount}[https://github.com/rtomayko/rdiscount],
|
||||||
{bluecloth}[http://deveiate.org/projects/BlueCloth],
|
{bluecloth}[http://deveiate.org/projects/BlueCloth],
|
||||||
{kramdown}[http://kramdown.rubyforge.org/] *ou*
|
{kramdown}[http://kramdown.rubyforge.org/] *ou*
|
||||||
{maruku}[http://maruku.rubyforge.org/]
|
{maruku}[http://maruku.rubyforge.org/]
|
||||||
Extensions de fichier:: <tt>.markdown</tt>, <tt>.mkd</tt> and <tt>.md</tt>
|
Extensions de fichier:: <tt>.markdown</tt>, <tt>.mkd</tt> et <tt>.md</tt>
|
||||||
Exemple:: <tt>markdown :index, :layout_engine => :erb</tt>
|
Exemple:: <tt>markdown :index, :layout_engine => :erb</tt>
|
||||||
|
|
||||||
Il n'est pas possible d'appeler des méthodes depuis markdown, ni même de lui
|
Il n'est pas possible d'appeler des méthodes depuis markdown, ni de lui
|
||||||
passer des variables locales. Par conséquent, il sera souvent utilisé en
|
passer des variables locales. Par conséquent, il sera souvent utilisé en
|
||||||
combinaison avec un autre moteur de rendu :
|
combinaison avec un autre moteur de rendu :
|
||||||
|
|
||||||
|
@ -404,8 +414,8 @@ templates :
|
||||||
|
|
||||||
Comme vous ne pouvez pas appeler de Ruby au sein de Markdown, vous ne pouvez
|
Comme vous ne pouvez pas appeler de Ruby au sein de Markdown, vous ne pouvez
|
||||||
pas utiliser de +layouts+ écrits en Markdown. Toutefois, il est possible
|
pas utiliser de +layouts+ écrits en Markdown. Toutefois, il est possible
|
||||||
d'utiliser un autre moteur de rendu pour le template que pour le +layout+ en
|
d'utiliser un moteur de rendu différent pour le template et pour le +layout+
|
||||||
utilisant l'option <tt>:layout_engine</tt>.
|
en utilisant l'option <tt>:layout_engine</tt>.
|
||||||
|
|
||||||
=== Templates Textile
|
=== Templates Textile
|
||||||
|
|
||||||
|
@ -413,7 +423,7 @@ Dépendances:: {RedCloth}[http://redcloth.org/]
|
||||||
Extensions de fichier:: <tt>.textile</tt>
|
Extensions de fichier:: <tt>.textile</tt>
|
||||||
Exemple:: <tt>textile :index, :layout_engine => :erb</tt>
|
Exemple:: <tt>textile :index, :layout_engine => :erb</tt>
|
||||||
|
|
||||||
Il n'est pas possible d'appeler des méthodes depuis textile, ni même de lui
|
Il n'est pas possible d'appeler des méthodes depuis textile, ni de lui
|
||||||
passer des variables locales. Par conséquent, il sera souvent utilisé en
|
passer des variables locales. Par conséquent, il sera souvent utilisé en
|
||||||
combinaison avec un autre moteur de rendu :
|
combinaison avec un autre moteur de rendu :
|
||||||
|
|
||||||
|
@ -427,16 +437,16 @@ templates :
|
||||||
|
|
||||||
Comme vous ne pouvez pas appeler de Ruby au sein de Textile, vous ne pouvez
|
Comme vous ne pouvez pas appeler de Ruby au sein de Textile, vous ne pouvez
|
||||||
pas utiliser de +layouts+ écrits en Textile. Toutefois, il est possible
|
pas utiliser de +layouts+ écrits en Textile. Toutefois, il est possible
|
||||||
d'utiliser un autre moteur de rendu pour le template que pour le +layout+ en
|
d'utiliser un moteur de rendu différent pour le template et pour le +layout+
|
||||||
utilisant l'option <tt>:layout_engine</tt>.
|
en utilisant l'option <tt>:layout_engine</tt>.
|
||||||
|
|
||||||
=== Templates RDoc
|
=== Templates RDoc
|
||||||
|
|
||||||
Dépendances:: {rdoc}[http://rdoc.rubyforge.org/]
|
Dépendances:: {rdoc}[http://rdoc.rubyforge.org/]
|
||||||
Extensions de fichier:: <tt>.rdoc</tt>
|
Extensions de fichier:: <tt>.rdoc</tt>
|
||||||
Exemple:: <tt>textile :README, :layout_engine => :erb</tt>
|
Exemple:: <tt>rdoc :README, :layout_engine => :erb</tt>
|
||||||
|
|
||||||
Il n'est pas possible d'appeler des méthodes depuis rdoc, ni même de lui
|
Il n'est pas possible d'appeler des méthodes depuis rdoc, ni de lui
|
||||||
passer des variables locales. Par conséquent, il sera souvent utilisé en
|
passer des variables locales. Par conséquent, il sera souvent utilisé en
|
||||||
combinaison avec un autre moteur de rendu :
|
combinaison avec un autre moteur de rendu :
|
||||||
|
|
||||||
|
@ -450,8 +460,8 @@ templates :
|
||||||
|
|
||||||
Comme vous ne pouvez pas appeler de Ruby au sein de RDoc, vous ne pouvez
|
Comme vous ne pouvez pas appeler de Ruby au sein de RDoc, vous ne pouvez
|
||||||
pas utiliser de +layouts+ écrits en RDoc. Toutefois, il est possible
|
pas utiliser de +layouts+ écrits en RDoc. Toutefois, il est possible
|
||||||
d'utiliser un autre moteur de rendu pour le template que pour le +layout+ en
|
d'utiliser un moteur de rendu différent pour le template et pour le +layout+
|
||||||
utilisant l'option <tt>:layout_engine</tt>.
|
en utilisant l'option <tt>:layout_engine</tt>.
|
||||||
|
|
||||||
=== Templates Radius
|
=== Templates Radius
|
||||||
|
|
||||||
|
@ -460,7 +470,7 @@ Extensions de fichier:: <tt>.radius</tt>
|
||||||
Exemple:: <tt>radius :index, :locals => { :key => 'value' }</tt>
|
Exemple:: <tt>radius :index, :locals => { :key => 'value' }</tt>
|
||||||
|
|
||||||
Comme vous ne pouvez pas appeler de méthodes Ruby depuis un template Radius,
|
Comme vous ne pouvez pas appeler de méthodes Ruby depuis un template Radius,
|
||||||
vous aurez sûrement à lui passer des variables locales
|
vous aurez sûrement à lui passer des variables locales.
|
||||||
|
|
||||||
=== Templates Markaby
|
=== Templates Markaby
|
||||||
|
|
||||||
|
@ -482,7 +492,7 @@ Dépendances:: {creole}[https://github.com/minad/creole]
|
||||||
Extensions de fichier:: <tt>.creole</tt>
|
Extensions de fichier:: <tt>.creole</tt>
|
||||||
Exemple:: <tt>creole :wiki, :layout_engine => :erb</tt>
|
Exemple:: <tt>creole :wiki, :layout_engine => :erb</tt>
|
||||||
|
|
||||||
Il n'est pas possible d'appeler des méthodes depuis creole, ni même de lui
|
Il n'est pas possible d'appeler des méthodes depuis creole, ni de lui
|
||||||
passer des variables locales. Par conséquent, il sera souvent utilisé en
|
passer des variables locales. Par conséquent, il sera souvent utilisé en
|
||||||
combinaison avec un autre moteur de rendu :
|
combinaison avec un autre moteur de rendu :
|
||||||
|
|
||||||
|
@ -496,8 +506,8 @@ templates :
|
||||||
|
|
||||||
Comme vous ne pouvez pas appeler de Ruby au sein de Creole, vous ne pouvez
|
Comme vous ne pouvez pas appeler de Ruby au sein de Creole, vous ne pouvez
|
||||||
pas utiliser de +layouts+ écrits en Creole. Toutefois, il est possible
|
pas utiliser de +layouts+ écrits en Creole. Toutefois, il est possible
|
||||||
d'utiliser un autre moteur de rendu pour le template que pour le +layout+ en
|
d'utiliser un moteur de rendu différent pour le template et pour le +layout+
|
||||||
utilisant l'option <tt>:layout_engine</tt>.
|
en utilisant l'option <tt>:layout_engine</tt>.
|
||||||
|
|
||||||
=== Templates CoffeeScript
|
=== Templates CoffeeScript
|
||||||
|
|
||||||
|
@ -512,7 +522,7 @@ Exemple:: <tt>coffee :index</tt>
|
||||||
haml '%div.title Bonjour le monde'
|
haml '%div.title Bonjour le monde'
|
||||||
end
|
end
|
||||||
|
|
||||||
Générera le template embarqué spécifié dans la chaîne de caractères.
|
Générera le code du template spécifié dans la chaîne de caractères.
|
||||||
|
|
||||||
=== Accéder aux variables dans un Template
|
=== Accéder aux variables dans un Template
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue