Есть ли способ остановить встроенный сервер Rails от прослушивания 0.0.0.0 по умолчанию? - PullRequest
9 голосов
/ 13 декабря 2011

Я много занимаюсь веб-разработкой в ​​ненадежных сетях (кафе, открытый Wi-Fi соседей, DEF CON), и меня раздражает, когда случайное, несомненно, глючное программное обеспечение (скажем, мое приложение на Rails в разработке) привязывает порт на 0.0.0.0 и начинает принимать запросы от всех желающих.Я знаю, что могу указать адрес привязки с параметром -b к серверу, но я бы хотел изменить глобальное значение по умолчанию, чтобы оно всегда работало таким образом, если я не скажу иначе.Конечно, я также могу запустить какой-нибудь брандмауэр, который блокирует соединение, но лучше не слушать в первую очередь.Существует ли файл '.railsrc' или аналогичный - по крайней мере, файл настроек для каждого проекта, но предпочтительно файл глобальных настроек - который я могу использовать, чтобы заставить сервер привязываться только к 127.0.0.1 по умолчанию?

Ответы [ 3 ]

5 голосов
/ 13 декабря 2011

Используйте параметр --binding=ip:

rails s --binding=127.0.0.1

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

4 голосов
/ 25 января 2012

Вы можете обновить файл / script / rails в вашем приложении rails, чтобы отобразить следующее:

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

Это будет привязывать приложение rails к my-host.com при запуске.Вы все еще можете переопределить параметры из командной строки.

Я не уверен, почему это не отражено в документации по Rails :: Server API.Вы можете взглянуть на https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb, чтобы увидеть реализацию сервера.

Обратите внимание, что в Rails 4 файл / script / rails был перемещен в /bin/rails.

1 голос
/ 13 декабря 2011

Глобально изменить его невозможно, вам придется использовать -b.

rails s -b <ip address>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...