2015-04-29 8 views
9

Vorrei collegare il server di rails a 127.0.0.1, anziché 0.0.0.0 quindi non è accessibile quando lavoro da un negozio di caffè.Bind rails server su 127.0.0.1 per impostazione predefinita

C'è un file di configurazione in cui posso specificare questa opzione in modo da non dover passare la riga di comando:

rails server -b 127.0.0.1 

?

+0

Per le guide 5 questo ha funzionato per me a differenza delle risposte di seguito: http: // StackOverflow.it/a/33852354/520567 – akostadinov

risposta

15

Se siete alla ricerca di Rails 5: Answer


In Rails ~> 4.0 è possibile personalizzare la sezione di avvio della classe Server:

In /config/boot.rb aggiungi a linee:

require 'rails/commands/server' 

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

Come già risposto a questa domanda:

How to change Rails 3 server default port in develoment?

How to change the default binding ip of Rails 4.2 development server?

+0

La domanda riguarda l'IP associato, non la porta. Sono sicuro che la configurazione potrebbe essere nello stesso file ma sarebbe utile specificare la parte IP qui. – sjagr

+0

Aggiunto il parametro Host. – tebayoso

+0

Questo file è in controllo di versione, però, giusto? Se il valore è impostato qui, viene impostato anche in produzione. – Matt

0

È possibile creare uno script bash per eseguire solo il comando di default:

#!/bin/bash 
rails server -b 127.0.0.1 

Metti nella stessa cartella del vostro progetto, il nome è tutto quello che vuoi (ad es devserv), quindi

chmod +x devserv 

E tutto quello che dovete fare è ./devserv

0

Se si mettono le opzioni di default su config/boot.rb allora tutti gli attributi di comando per il rastrello e rotaie fallisce (esempio: rake -T o rails g model user)! Quindi, aggiungere questo per bin/rails dopo la linea require_relative '../config/boot' e il codice viene eseguito solo per il comando rotaie 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 

I bin/rails loks di file come questo:

#!/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' 
2

Io uso Foreman come un gestore di processi in sviluppo.

Dopo aver aggiunto gem 'foreman' al Gemfile e aver eseguito bundle install, creare un file Procfile nella directory principale della directory dell'applicazione.

Mentre è possibile aggiungere linee di gestire altri processi, la mia legge semplicemente:

web: rails server -p $PORT -b 127.0.0.1 

Poi, per avviare le guide del server tramite il Procfile, eseguire foreman start. Se hai qui altri processi (Redis, worker), si avvieranno contemporaneamente.

Problemi correlati