Запуск нескольких экземпляров 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, который поддерживает все приложения?
Ответы
Ответ 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 и разные порты:
![введите описание изображения здесь]()
таким образом, я могу имитировать два домена для одного и того же приложения при разработке