Comment faire tourner un serveur ruby sur Glitch.com

Publié le

Saviez-vous qu'il était possible de faire tourner du Ruby sur Glitch.com ? Si cela vous intéresse, le BlogDuWebdesign vous propose un guide complet !

Le début de tout : sass

Pour vous expliquer comment je suis tombé sur cette information, laissez- moi vous raconter une petite histoire.

J'étais en train de regarder le code source de diverses applications sur glitch quand je suis tombé sur une application qui listait le paquet npm "compass". Compass est un outil en ruby fournissant des outils pour travailler avec Sass, et pour l'utiliser il faut donc qu'il y ait Ruby d'installé. Seraits-ce possible ?

Il semble bien que oui ! Et qui dit ruby dit possibilité de faire tourner des applications comme Rails ou Sinatra ! Étant en train d'essayer de faire tourner GraphQL sur un serveur Ruby, j'ai eu envie de tenter l'expérience d'installer un Sinatra sur Glitch et de partager mes découvertes avec vous.

Première étape : Une installation basique de Sinatra

Pour commencer, initialisons notre Gemfile avec l'outil cli. Cliquez sur le bouton "status", puis sur "console" dans le vollet qui c'est ouvert. Une console se charge et nous laisse accéder à la cli, dans laquelle nous allons pouvoir lancer nos commandes. 

bundle init
bundle add sinatra
bundle add thin

refresh

Si vous n'etes pas familier avec Glitch.com, sachez que les midifications faites en consoles n'apparaissent pas dans l'interface web si vous ne lancez pas la commande refresh.

Tout se passe parfaitement, notre Gemfile apparait, nos gems sont téléchargées, tout semble marcher. Créeons donc une petite application minimaliste dans le fichier server.rb.

# ./server.rb
require 'sinatra'
get '/' do
   "hello world"
end

Dans la console nous n'avons plus qu'à lancer notre serveur avec la commande ruby ./server.rb. Ça marche, le serveur tourne et la page nous affiche notre Hello world ! Nous avons un résultat bien plus rapidement et simplement que ce à quoi je m'attendais.

Seconde étape : automatisation

Notre application tourne, mais nous avons besoin de lancez l'application et les bundle install à la main, ce qui n'est pas tres pratique. Nous allons donc configurer Glitch pour simplifier les choses en créeant un fichier glitch.json.

{
  "start": "ruby ./server.rb",
  "watch": {
    "restart": {
      "include": [ "\.rb$"]
    }
  }
}

Nous créons donc une tache star et nous surveillons les changements dans tout fichier à l'extension .rb, pour pouvoir redémarrer l'application automatiquement. Après quelques secondes, notre application passe live, tout fonctionne !

Pour installer automatiquement les dépendances, la logique est la même, je vous colle le fichier complet ci-dessous.

{
  "start": "bundle exec thin start",
  "install": "bundle install",
  "watch": {
    "restart": {
      "include": [ "\.rb$" ]
    },
    "install": {
      "include": [ "^Gemfile$" ]
    }
  }
}

Dernière étape : Rack

Nous avons notre serveur fonctionnelle, mais elle est un peu basique disons le. Serait-il possible de faire tourner notre code sous la forme d'une application Rack ?

Pour commencer, nous allons changer la forme de notre application Sinatra dans server.rb.

# ./server.rb
require 'sinatra'
class App < Sinatra::Base
  get '/' do
    Character.first.to_s
  end
end

Nous allons aussi ajouter un petit confir.ru minimaliste

require './server'
run App

Il ne nous reste plus qu'à modifier la commande start de notre glitch.json et à croiser les doigts.

{
  "start": "bundle exec thin start",

  […]

Victoire, notre application redémarre et la page affiche le "Hello world" tant convoité !

By Benjamin Sanchez

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *