2011-12-12 9 views
9

Hago mucho desarrollo web en redes que no son de confianza (coffeeshops, wifi abierto de los vecinos, DEF CON), y me pongo nervioso cuando el software al azar, con errores (mi aplicación Rails en desarrollo, digamos) enlaza un puerto en 0.0. 0.0 y comienza a recibir solicitudes de todos los interesados. Sé que puedo especificar la dirección de enlace con la opción -b en el servidor, pero me gustaría cambiar el valor predeterminado de forma global para que siempre se ejecute de esa manera, a menos que le diga lo contrario. Por supuesto, también puedo ejecutar algún tipo de firewall que bloqueará la conexión, pero es mejor no escuchar en primer lugar. ¿Hay un archivo '.railsrc' o similar, al menos un archivo de configuración por proyecto, pero preferiblemente algún archivo de configuración global, que pueda usar para forzar al servidor a vincularse solo a 127.0.0.1 de manera predeterminada?¿Hay alguna forma de evitar que el servidor integrado de Rails escuche en 0.0.0.0 de forma predeterminada?

+2

Si su sistema operativo admite alias, solo use eso para ejecutar el servidor. –

Respuesta

4

puede actualizar el/escritura de archivos/rieles en que los carriles de aplicación para reflejar lo siguiente:

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

Esto vinculará la aplicación de rieles a mi -host.com cuando se inicia. Todavía puede anular las opciones desde la línea de comando.

No estoy seguro de por qué esto no se refleja en los documentos de Rails :: Server API. Puede echar un vistazo al https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb para ver la implementación del servidor.

Tenga en cuenta que en Rails 4, el archivo/script/rails se ha movido a/bin/rails.

+0

Esto es exactamente lo que estaba buscando, ¡gracias! –

1

No hay forma de cambiarlo globalmente, tendrá que usar -b.

rails s -b <ip address>

+1

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

5

Utilice la --binding=ip parámetro:

rails s --binding=127.0.0.1 

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

+1

Conozco esa opción: me gustaría poder cambiarla globalmente, así que no tengo que especificarla cada vez que hago girar la servidor. –

+0

Puede parchear 'Rails :: Server :: Options # parse!' Definido en https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb en un inicializador en su aplicación, o incluso editar ese archivo en la gema en su sistema. – clyfe

Cuestiones relacionadas