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
?
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?
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
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.
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'