Après la mise à niveau de l'application rails de notre équipe vers la version 4.2, comme indiqué dans la note de publication , l'ip par défaut rails server
se lie à est remplacé localhost
par0.0.0.0
.
Nous développons avec Vagrant, et souhaitons que le serveur de développement soit accessible directement depuis le navigateur sur la machine hôte.
Au lieu de taper à rails s -b 0.0.0.0
chaque fois à partir de maintenant, je me demande s'il existe une solution plus élégante, pour que nous puissions toujours utiliser sth aussi simple que rails s
pour démarrer le serveur. Peut-être:
- un fichier de configuration
rails s
lit où je peux modifier l'IP de liaison par défaut (sans utiliser-c
) - port forward avec vagrant (essayé mais échoué, voir le problème rencontré ci-dessous)
- un patch de singe au rack, qui change l'IP de liaison par défaut
Le véritable objectif derrière cela est que je souhaite que la mise à niveau se fasse en douceur au sein de notre équipe, en évitant le problème que les gens devront constamment redémarrer leur serveur de rails en raison du manque. -b 0.0.0.0
pièce .
J'ai essayé la redirection de port vagabond, mais Connection Refused
je reçois toujours lorsque je visite localhost:3000
sur la machine hôte. Les deux lignes de configuration que j'ai essayées étaient:
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 3000, guest_ip: '127.0.0.1', host: 3000
Je n'ai trouvé aucune instruction pertinente dans la documentation officielle. Toute aide serait appréciée.
la source
HOST=0.0.0.0
, et le serveur de développement Rails utilisera automatiquement cette valeur.Réponses:
J'ai le même problème ici et j'ai trouvé aujourd'hui une meilleure solution. Ajoutez simplement ce code à votre config / boot.rb et cela devrait fonctionner avec vagrant.
ps: C'est basé sur: cette réponse
la source
Vous pouvez utiliser Foreman pour exécuter un
Procfile
avec vos commandes personnalisées:Démarrez maintenant votre application Rails avec:
L'avantage de Foreman est que vous pouvez ajouter d'autres applications au Procfile (comme sidekiq, mailcatcher).
La mauvaise chose à propos du contremaître est que vous devez former votre équipe à la course à la
foreman start
placerails s
.la source
foreman s
fonctionnera également - peut être une transition plus facile à partir derails s
.Rencontré le même problème. Trouvé le blog Make Rails 4.2 serveur écoute toutes les interfaces .
Ajoutez ce qui suit à config / boot.rb
la source
Si vous activez les options par défaut,
config/boot.rb
tous les attributs de commande pour rake et rails échouent (exemple:rake -T
ourails g model user
)! Donc, ajoutez ceci à labin/rails
ligne aprèsrequire_relative '../config/boot'
et le code est exécuté uniquement pour la commande du serveur rails:Le
bin/rails
fichier ressemble à ceci:la source
Pour Rails 5.1.7 avec Puma 3.12.1 la réponse sélectionnée ne fonctionne pas, mais je l'ai accomplie en ajoutant ce qui suit à mon
config/puma.rb
fichier:J'ai déterminé cela en inspectant le fichier dsl . Il utilise
instance_eval
sur ce fichier, il y a donc probablement d'autres façons de le faire, mais cela m'a semblé le plus raisonnable.la source
Voici une solution plus simple que j'utilise. J'aime déjà / ai besoin de dotenv et puma-heroku , donc si leur utilisation ne fonctionne pas pour vous, cela pourrait ne pas être pour vous.
/config/puma.rb
Gemfile
.env
Maintenant, je peux commencer à la fois le développement et la production avec
rails s
.la source
Passez à Puma et spécifiez
port
dansconfig/puma.rb
, par exemple:Apparemment, il se liera à 0.0.0.0 pour le port spécifié: https://github.com/puma/puma/issues/896
la source
Si vous utilisez docker ou un autre outil pour gérer les variables d'environnement, vous pouvez définir la
HOST
variable d'environnement sur l'adresse IP que vous devez lier.Exemple:
HOST=0.0.0.0
Ajoutez-le au
docker.env
fichier si vous utilisez Docker ou.env
si vous utilisez Foreman.la source
Pour Rails 5 avec Puma, la réponse sélectionnée ne fonctionne pas. Vous pouvez obtenir une telle erreur:
cannot load such file -- rails/commands/server
Pour une solution appropriée, ajoutez ce qui suit à
config/puma.rb
:la source