Serveurs/Smeagol.md
... ...
@@ -9,17 +9,28 @@ Smeagol est une VM dans le *pool* du I11. Elle héberge le [Wiki (Gollum)](/Serv
9 9
### Installation/Update
10 10
11 11
Le wiki est installé avec Gollum, sur l'utilisateur `wiki`.
12
-Gollum est installé via ses sources depuis [notre dépôt](https://git.resel.fr/resel/gollum-forks) et clôné dans `~wiki/gollum-forks`.
12
+Gollum est installé via nos sources patchées depuis [notre dépôt](https://git.resel.fr/resel/gollum-forks) et clôné dans `~wiki/gollum-forks`.
13 13
14 14
La procédure d'installation est décrite en détail dans le [readme](https://git.resel.fr/resel/gollum-forks/blob/master/README.md).
15 15
16
-Pour intégrer des mises à jour depuis le dépôt :
16
+Globalement, les *gem*s sont installés dans un "environnement virtuel" à la ruby, pour que les versions se côtoient sans problèmes, bref c'est `bundle` qui gère l'installation des dépendences. Le programme gollum en lui même n'est pas compilé, et est lancé directement depuis la source du dépôt.
17
+
18
+Ainsi, pour intégrer des mises à jour depuis le dépôt :
17 19
- *pullez* les modifications : `git pull`.
18
-- Installez avec `bundle install`
19 20
- Relancez le service `systemctl restart gollum`
21
+Et c'est tout.
22
+
23
+Pour la configuration du service à proprement parler, voir les détails sur l'article [Wiki](/Services/Wiki).
20 24
21
-Pour la configuration du service, voir les détails sur l'article [Wiki](/Services/Wiki).
25
+##### Le Hack de Ruby
22 26
27
+Parce que Ruby c'est nul, il y a un "bug" dans la lib `Net/HTTP` de Ruby : dans leur méthode "post_form", ils instancient un objet HTTP de telle manière que les variables d'environnement pour définir un proxy est pas prise en compte. En gros ils forcent le paramètre proxy_addr à Nil, alors que dans le constructeur ils vérifient que si ce paramètre n'est pas passé, ils vont lire dans les var d'env sinon ils l'utilisent. Or là il est passé mais vaut Nil donc ça ne va pas chercher dans les var d'env et ça ne fait rien.
28
+En bref, le code source de cette lib a été grossièrement hackée pour contourner cela.
29
+
30
+Il s'agit de la ligne 612 dans `/usr/lib/ruby/2.1.0/net/http.rb` :
31
+```ruby
32
+ p_addr = :ENV
33
+```
23 34
### Gestion du processus
24 35
25 36
Gollum est un programme compilé, tournant en tant que *daemon*, et géré par *systemd* avec la commande `systemctl <cmd> gollum`.