web-dev-qa-db-fra.com

Lier le serveur Rails à 127.0.0.1 par défaut

J'aimerais lier le serveur Rails à 127.0.0.1 au lieu de 0.0.0.0 afin qu'il ne soit pas accessible lorsque je travaille dans un café.

Existe-t-il un fichier de configuration dans lequel je peux spécifier cette option afin de ne pas avoir à passer le commutateur de ligne de commande:

Rails server -b 127.0.0.1

?

12
Allyl Isocyanate

Si vous recherchez Rails 5 : Répondre


Dans Rails ~> 4.0, vous pouvez personnaliser la section de démarrage de la classe Server:

Dans /config/boot.rb, ajoutez ces lignes:

require 'Rails/commands/server'

module Rails
  class Server
    def default_options
      super.merge({Port: 10524, Host: '127.0.0.1'})
    end
  end
end

Comme déjà répondu à cette question:

Comment changer le port par défaut du serveur Rails 3 en développement?

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

16
tebayoso

Vous pouvez créer un script bash pour exécuter simplement la commande par défaut:

#!/bin/bash
Rails server -b 127.0.0.1

Placez-le dans le même dossier que votre projet, nommez-le comme vous le souhaitez (par exemple, devserv), puis

chmod +x devserv

Et tout ce que vous avez à faire est ./devserv

2
sjagr

J'utilise Foreman en tant que gestionnaire de processus en développement.

Après avoir ajouté gem 'foreman' à votre Gemfile et exécuté bundle install, créez un fichier Procfile à la racine du répertoire de votre application.

Bien que vous puissiez ajouter des lignes pour gérer d’autres processus, le mien se lit simplement:

web: Rails server -p $PORT -b 127.0.0.1

Ensuite, pour démarrer le serveur Rails via Procfile, exécutez foreman start. Si vous avez d'autres processus ici (Redis, travailleurs), ils démarreront en même temps.

2
Matt

Si vous définissez les options par défaut sur config/boot.rb, tous les attributs 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:  '127.0.0.1', Port: 10524)
      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:  '127.0.0.1', Port: 10524)
      end
    end
  end
end

require 'Rails/commands'
0
phlegx