2015-04-29 1 views
9

Я хотел бы привязать сервер rails к 127.0.0.1 вместо 0.0.0.0, чтобы он не был доступен, когда я работаю в кафе.Bind rails server to 127.0.0.1 по умолчанию

Есть конфигурационный файл, где можно указать эту опцию, так что я не должен передать ключ командной строки:

rails server -b 127.0.0.1 

?

+0

Для рельсов 5 это сработало для меня в отличие от ответов ниже: http: // stackoverflow.com/a/33852354/520567 – akostadinov

ответ

15

Если вы ищете Rails 5: Answer


В Rails ~> 4.0 вы можете настроить раздел загрузки класса сервера:

В /config/boot.rb добавить эти строки:

require 'rails/commands/server' 

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

Как уже ответили на эти вопросы:

How to change Rails 3 server default port in develoment?

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

+0

Вопрос касается связанного IP, а не порта. Я уверен, что конфиг может быть в одном файле, но здесь было бы полезно указать здесь часть IP. – sjagr

+0

Добавлен параметр Host. – tebayoso

+0

Этот файл отмечен в контроле версий, правда, правильно? Если значение установлено здесь, то оно также устанавливается в процессе производства. – Matt

0

Вы можете сделать Баш скрипт просто запустить команду по умолчанию:

#!/bin/bash 
rails server -b 127.0.0.1 

Положите его в той же папке, что и проект, назовите его все, что вы хотите (например, devserv), затем

chmod +x devserv 

И все, что вам нужно сделать, это ./devserv

0

Если поставить настройки по умолчанию на config/boot.rb тогда все атрибуты команды для граблей и рельсов не удается (например: rake -T или rails g model user)! Итак, добавьте это bin/rails после строки require_relative '../config/boot' и код выполняется только для команды рельсы сервера:

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 

В bin/rails файл Локс, как это:

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

я использую Foreman как менеджер процесса в развитие.

После добавления gem 'foreman' в ваш Gemfile и запуске bundle install, создайте файл Procfile в корне каталога приложений.

В то время как вы можете добавить строки для управления другими процессами, шахта просто читает:

web: rails server -p $PORT -b 127.0.0.1 

Затем, чтобы начать рельсам сервер через PROCFILE, запустите foreman start. Если у вас есть другие процессы (Redis, работники), они будут загружаться одновременно.