2011-12-12 10 views
9

Realizzo molto web su reti non fidate (coffeeshop, wifi aperto dei vicini, DEF CON), e ottengo un po 'di eccitazione quando il software è casuale, buggy (la mia app Rails in sviluppo, per esempio) lega una porta su 0.0. 0.0 e inizia a ricevere richieste da tutti gli altri. So che posso specificare l'indirizzo di associazione con l'opzione -b al server, ma vorrei cambiare l'impostazione predefinita a livello globale in modo che venga sempre eseguita in quel modo, a meno che non lo dica diversamente. Naturalmente posso anche eseguire una specie di firewall che bloccherà la connessione, ma meglio non ascoltare in primo luogo. Esiste un file '.railsrc' o simile - almeno un file di impostazioni per progetto, ma preferibilmente un file di impostazioni globali - che posso usare per forzare il server a collegarsi solo a 127.0.0.1 per impostazione predefinita?C'è un modo per impedire che il server integrato di Rails ascolti su 0.0.0.0 di default?

+2

Se il sistema operativo supporta gli alias, è sufficiente utilizzarlo per eseguire il server. –

risposta

4

è possibile aggiornare la/script file/binari in te applicazione Rails per riflettere la seguente:

#!/usr/bin/env ruby 
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. 

APP_PATH = File.expand_path('../../config/application', __FILE__) 
require File.expand_path('../../config/boot', __FILE__) 

# START NEW CODE 
require "rails/commands/server" 
module Rails 
    class Server 
    def default_options 
     super.merge({ 
     :Host  => 'my-host.com', 
     :Port  => 3000, 
     :environment => (ENV['RAILS_ENV'] || "development").dup, 
     :daemonize => false, 
     :debugger => false, 
     :pid   => File.expand_path("tmp/pids/server.pid"), 
     :config  => File.expand_path("config.ru")    
     }) 
    end 
    end 
end 
# END NEW CODE 

require 'rails/commands' 

Ciò vincolerà l'app per i binari al mio -host.com all'avvio. È comunque possibile ignorare le opzioni dalla riga di comando.

Non sono sicuro del motivo per cui ciò non si riflette nei documenti Rails :: Server API. Puoi dare un'occhiata a https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb per vedere l'implementazione del server.

Si noti che in Rails 4, il file/script/rails è stato spostato in/bin/rails.

+0

Questo è esattamente quello che stavo cercando - grazie! –

1

Non c'è modo di cambiarlo a livello globale, sarà necessario utilizzare -b.

rails s -b <ip address>

+1

On Rails 2: 'script/server -b ' –

5

utilizzare il parametro --binding=ip:

rails s --binding=127.0.0.1 

https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb

+1

Sono consapevole di questa opzione - Mi piacerebbe poterlo modificare a livello globale, quindi non devo specificarlo ogni volta che faccio girare il server. –

+0

È possibile eseguire il monkeypatch di 'Rails :: Server :: Options # parse!' Definito in https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb in un inizializzatore nel proprio applicazione, o persino modificare quel file nella gemma del tuo sistema. – clyfe

Problemi correlati