Подтвердить что ты не робот

Запуск нескольких экземпляров Rails-сервера

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

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

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

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

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

UPDATE

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

  • Вернитесь к новой установке первого приложения Rails, прежде чем я создам эскиз элемента
  • Запустите сервер рельсов через $ rails server в корневом каталоге приложения
  • Проверьте http://localhost:3000

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

rails s -p 3007

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

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

rails s -p 3007 -P 42342

Ответ 4

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

Ответ 5

Чтобы запустить сервер 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

Ответ 6

В Rails 5 и Puma-сервере это можно сделать так:

С двумя терминалами запустите rails server в каждом терминале, указав разные файлы Pid и разные порты: введите описание изображения здесь

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