Comment changer l’adresse IP de liaison par défaut du serveur de développement Rails 4.2?

Après la mise à niveau de l’application rails de notre équipe vers la version 4.2, comme indiqué dans la note de publication , le rails server ip rails server par défaut lié à est modifié en localhost partir de 0.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, je me demande s’il existe une solution plus élégante, de sorte que nous puissions toujours utiliser sth aussi simplement que des 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 en avant avec vagrant (essayé mais échoué, voir le problème rencontré ci-dessous)
  • un patch de singe à ranger, qui change l’IP de liaison par défaut

Le véritable objective 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 utilisateurs devront constamment redémarrer sur leur serveur de rails à cause de la partie -b 0.0.0.0 manquante.

J’ai essayé le transfert de port vagrant, mais j’obtiens toujours Connection Refused 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 

Vous n’avez trouvé aucune instruction pertinente dans les documents officiels. Toute aide serait appréciée.

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.

 require 'rails/commands/server' module Rails class Server def default_options super.merge(Host: '0.0.0.0', Port: 3000) end end end 

ps: Sa basé sur: cette réponse

Vous pouvez utiliser le contremaître pour exécuter un Procfile avec vos commandes personnalisées:

 # Procfile in Rails application root web: bundle exec rails s -b 0.0.0.0 

Maintenant, lancez votre application Rails avec:

 foreman start 

La bonne chose à propos de contremaître est que vous pouvez append d’autres applications au Procfile (comme sidekiq, mailcatcher).

La mauvaise chose à propos du contremaître est que vous devez former votre équipe pour lancer le foreman start au lieu des rails 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

 require 'rails/commands/server' module Rails class Server alias :default_options_bk :default_options def default_options default_options_bk.merge!(Host: '0.0.0.0') end end end 

Si vous placez les options par défaut sur config/boot.rb tous les atsortingbuts de commande pour rake et rails échouent (exemple: rake -T ou rails g model user )! Donc, ajoutez ceci à bin/rails après la ligne require_relative '../config/boot' et le code est exécuté uniquement pour la commande du serveur rails:

 if ARGV.first == 's' || ARGV.first == 'server' require 'rails/commands/server' module Rails class Server def default_options super.merge(Host: '0.0.0.0', Port: 3000) end end end end 

Le fichier bin/rails ressemble à ceci:

 #!/usr/bin/env ruby APP_PATH = File.expand_path('../../config/application', __FILE__) require_relative '../config/boot' # Set default host and port to rails server if ARGV.first == 's' || ARGV.first == 'server' require 'rails/commands/server' module Rails class Server def default_options super.merge(Host: '0.0.0.0', Port: 3000) end end end end require 'rails/commands' 

Voici une solution plus simple que j’utilise. J’aime déjà / besoin de dotenv et de puma-heroku , donc si cela ne fonctionne pas pour vous, cela pourrait ne pas être pour vous.

/config/puma.rb

 plugin :heroku 

Gemfile

 gem 'dotenv-rails', groups: [:development, :test] 

.env

 PORT=8080 

Maintenant, je peux lancer le développement et la production avec des rails s .

Passez à Puma et spécifiez le port dans config/puma.rb , par exemple:

 port ENV.fetch("PORT") { 3000 } 

Apparemment, il sera lié à 0.0.0.0 pour le port spécifié: https://github.com/puma/puma/issues/896