Quel est ce fichier config.ru
, et à quoi ça sert dans les projets Sinatra? Dans ma lanière du projet, un tel code est écrit:
require './app'
run Sinatra::Application
config.ru
(les .ru
signifie "rackup") est un fichier de configuration de Rack. Rack fournit une interface minimale entre les serveurs Web qui prennent en charge Ruby et Ruby frameworks. C'est comme une Ruby implémentation d'une - CGI qui offre un protocole standard pour que les serveurs Web exécutent des programmes.
run
du rack signifie ici pour les requêtes au serveur, faites Sinatra::Application
le contexte d'exécution à partir duquel la DSL de Sinatra pourrait être utilisée. Toutes les méthodes DSL sur le main
sont ensuite déléguées à cette classe.
Donc, essentiellement dans ce config.ru
fichier ce qui se passe est la suivante:
Tout d'abord, vous avez besoin de votre code app
qui utilise le DSL de Sinatra, puis exécutez le framework Sinatra ... donc dans le contexte de Sinatra::Application
si ton app.rb
contenait quelque chose comme
get '/' do
'Hello world!'
end
Le bloc get
signifierait quelque chose pour Rack, dans ce cas (lorsque quelqu'un essaie d'accéder à [GET] l'URL de la maison,
renvoyer "Bonjour tout le monde!"
Que votre application vous montrera dans votre navigateur.
config.ru
est un fichier de configuration par défaut pour une commande rackup avec une liste d'instructions pour Rack .
Rack est une interface et une architecture qui fournit un langage spécifique au domaine (DSL) et connecte une application à un monde Web. En deux mots, il permet de créer des applications Web et de travailler avec les demandes, les réponses (et de nombreuses autres technologies liées au Web) de la manière la plus pratique.
Sinatra ainsi que Rails sont des frameworks web, ils utilisent donc tous les deux Rack:
Rack fournit une interface minimale entre les serveurs Web prenant en charge les frameworks Ruby et Ruby.
L'interface suppose simplement que vous avez un objet qui répond à une méthode d'appel (comme un proc) et renvoie un tableau avec:
Vous pouvez exécuter un serveur Rack de base avec la commande rackup
qui recherchera un config.ru
fichier dans le répertoire courant.
Vous pouvez créer un serveur hello world minimal avec:
# config.ru
run Proc.new { |env| ['200', {'Content-Type' => 'text/html'}, ['Hello World']] }
# run this with the `rackup` command
Comme Sinatra, tout comme Rails s'appuie sur Rack, il utilise rackup
en interne pour interfacer entre le serveur et le framework. config.ru
est donc le point d'entrée de tout programme basé sur Rack.
Qu'est-ce que c'est bootstrap l'application et passe le Sinatra::Application
classe vers le rack qui a une méthode de classe call
.
Sinatra::Application
est ensuite chargé de prendre la demande entrante (l'env) et de la transmettre aux routes fournies par votre application, puis de transmettre le code de réponse, les en-têtes et le corps de la réponse.