Запуск нескольких экземпляров Rails Server - PullRequest
34 голосов
/ 08 февраля 2011

Я новичок в Rails, поэтому, пожалуйста, прости меня, если это очевидно.

Я много экспериментирую, создаю приложения, тестирую функции и т. Д. Мое первое приложение-скаффолд работает отлично, но я хотел создать второе приложение для тестирования другой функции.

Я сделал резервную копию уровня папок на моем компьютере, запустил $ rails new taskmaster (тестовое приложение списка дел). Я запустил строительные леса для модели Task, запустил сервер через $ rails server и попытался загрузить http://localhost:3000.

Но я получил ошибку маршрутизации, сказав, что не может найти маршрут "members". Но members был из моего первого приложения на Rails! Я подумал, что, запустив $ rails server в каталоге taskmaster, он запустит сервер для этого приложения.

Как мне сообщить серверу Rails, какое приложение обслуживать?

UPDATE

Я только что обнаружил, что если я:

  1. Откатитесь до новой установки first Rails-приложения до того, как я создал эшафот Member
  2. Запустите сервер rails через $ rails server в корневом каталоге приложения
  3. Чек http://localhost:3000

Он все еще пытается пойти по маршруту members, который больше не существует, потому что я откатился через git.

Я предполагаю, что это означает, что что-то в моей области /usr/local/, касающееся моих первоначальных установок Ruby и Rails, поддерживает эту информацию (мои приложения настроены в моей папке Documents в моем домашнем каталоге).

Я думал, что Rails-приложения - это, по сути, автономные приложения внутри каталога - вам просто нужна рабочая установка Ruby, чтобы их запустить. Находится ли сервер Rails внутри каждого каталога приложений, или это какой-то всеобъемлющий сервер Rails, который вмещает все приложения?

Ответы [ 8 ]

47 голосов
/ 08 февраля 2011

Я подозреваю, что старый сервер все еще работает и новый сервер не запускается.Попробуйте сначала убить его, а затем запустите его в новом приложении.

Кроме того, вы можете запустить новый сервер на другом порту, используя переключатель -p (например, rails server -p 3001)

27 голосов
/ 27 августа 2015

Вы можете запустить несколько экземпляров сервера webrick на локальном хосте, назначив другой номер порта:

rails s -p 3007

Но иногда это может не сработать.

У меня есть совет для вас.Вы можете попробовать использовать это вместе с другими опциями, предоставляемыми webrick.Просто попробуйте указать любой номер в виде PID, используя -P:

rails s -p 3007 -P 42342
10 голосов
/ 08 февраля 2011

Вы не можете точно сказать серверу, какое приложение обслуживать, но вы можете запустить сервер для каждого приложения и выбрать, какое из них загрузить. Если вы хотите запустить более одного сервера, вам придется запускать их на разных портах. Порт по умолчанию - 3000. Чтобы запустить сервер на порту 3001, запустите rails s -p 3001 на Rails 3 или script/server -p 3001 на Rails 2.

5 голосов
/ 26 сентября 2017

В Rails 5 и на сервере Puma я смог добиться этого следующим образом:

С двумя терминалами, запустите rails server в каждом терминале, указав разные Pid-файлы и разные порты: enter image description here

таким образом, я могу смоделировать два домена для одного и того же приложения при разработке

4 голосов
/ 30 ноября 2016

Чтобы запустить сервер rails, запустите команду rails s или rails server Следующие опции действительны

-p Port
-b Binding (ip address)
-c Config file (for custom rack configuration)
-d Daemonize server
-u Enable debugger
-e Change the environment (defaults to development)
-P Specify a PID file

Чтобы запустить экземпляр на другом порту на локальной машине, используйте следующую команду

rails s -b 127.0.0.1 -p 8081 

Обратите внимание, что вы можете удалить «127.0.0.1», так как «localhost» является хостом по умолчанию.

Для получения дополнительной информации, проверьте эту ссылку http://guides.rubyonrails.org/command_line.html#rails-server

2 голосов
/ 16 ноября 2018
rails s -p 4000 --pid tmp/pids/server2.pid

Приведенная выше команда безопасно запустит второй сервер в порту 4000

1 голос
/ 15 февраля 2011

Спасибо за вашу помощь - оказывается, это было довольно странное явление. Каким-то образом вся папка моего проекта была скопирована в корзину. Когда я запускал сервер, я запускал экземпляр сервера в «Корзине», а откат и отредактированная копия оставались на том же месте. Не уверен, как это произошло (возможно, это относится к git, еще одному инструменту, который я только изучаю). В любом случае, спасибо за помощь, извините, это было так просто!

0 голосов
/ 18 июня 2018

В текущей версии Rails 5.2.0 и Ruby 2.4.1p111 запуск двух экземпляров сервера для одного и того же приложения возможен с несколькими PID.

$ rails s 
=> Booting Puma
=> Rails 5.2.0 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.4.1-p111), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

Теперь запуск еще одного сервера на другом порту завершился неудачно с проблемами pid.

$ rails s -p 3001
=> Booting Puma
=> Rails 5.2.0 application starting in development 
=> Run `rails server -h` for more startup options
A server is already running. Check /Users/biju/app1/tmp/pids/server.pid.
Exiting

Нижеприведенный подход к запуску сервера позволяет использовать несколько экземпляров приложения.

$ rails s -p 3001 -P 321412
=> Booting Puma
=> Rails 5.2.0 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.4.1-p111), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3001
Use Ctrl-C to stop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...