J’essaie d’apprendre comment développer une application web avec Ruby On Rails, mais j’ai commis une erreur stupide. J’essaie d’utiliser Phusion Passenger aka mod_rails pour utiliser Apache au lieu de WEBrick; J’ai installé le module via gem et lance le
sudo passenger-install-apache2-module
commande pour installer passager; puis j’ai édité le fichier http.conf ajoutant
LoadModule passenger_module /Users/Stopped/.rvm/gems/ruby-1.9.3-p327/gems/passenger-3.0.19/ext/apache2/mod_passenger.so PassengerRoot /Users/Stopped/.rvm/gems/ruby-1.9.3-p327/gems/passenger-3.0.19 PassengerRuby /Users/Stopped/.rvm/wrappers/ruby-1.9.3-p327/ruby
ajouté le VirtualHost
ServerName rails.local DocumentRoot "/Users/Stopped/RoR/prova/public" AllowOverride all Options -MultiViews Order allow,deny Allow from all
a redémarré Apache avec sudo apachectl restart mais ça ne marche pas 🙁 Si je cherche dans localhost je vois la page “ça marche!” mais si je vais sur rails.local il n’y a pas mon application Rails 🙁
Le passager est chargé
Apache/2.2.22 (Unix) Phusion_Passenger/3.0.19 DAV/2 PHP/5.4.9 Server at localhost Port 80
Des idées?
PS: Ceci est la sortie “apachectl -S”
VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: *:80 is a NameVirtualHost default server rails.local (/private/etc/apache2/extra/httpd-vhosts.conf:53) port 80 namevhost rails.local (/private/etc/apache2/extra/httpd-vhosts.conf:53) Syntax OK
SOLUTION
Uhm … je l’ai résolu, en ajoutant 127.0.0.1 rails.local à mon fichier d’hôtes, mais je ne peux pas comprendre pourquoi; Quelqu’un peut m’expliquer cela? ._.
vous ne pouvez pas utiliser un caractère générique avec localhost dans votre fichier hosts. vous devez spécifier explicitement chaque sous-domaine pour localhost dans votre fichier hosts. Si vous cherchez une alternative, vous pouvez acheter un nom de domaine et pointer ce nom de domaine sur 127.0.0.1 avec un joker. Vous pouvez même aller plus loin et avoir une application squelette qui pointe différents sous-domaines vers différentes applications en mappant les routes.