Один проект с несколькими приложениями?

Можно ли запускать несколько приложений rails из одного проекта Cloud9 IDE? Например, у меня есть следующая структура...

MyApp (проект C9)

  • MyApp-API (Rails/Grape)
  • MyApp-Web (Rails)

Когда я запускаю rails server -p $PORT -b $IP через терминал в C9 в соответствующих каталогах приложений (например, MyApp-API, MyApp-Web), они оба работают. Однако, когда я делаю запросы cURL или пытаюсь просматривать напрямую, я не могу достичь маршрутов, как ожидалось.

Я предполагаю, что это потому, что я запускаю серверы rails с одинаковыми конфигурациями портов/IP.


person xspydr    schedule 01.10.2014    source источник


Ответы (3)


Cloud9 (пока) не предоставляет несколько портов наружу. Один из подходов, который может сработать, — установить небольшой обратный прокси-сервер, например HAProxy или Nginx перед вашими приложениями. Вы можете запускать различные приложения на произвольных портах и ​​позволить прокси-серверу прослушивать $PORT. Затем настройте прокси для пересылки в ваши приложения, например. исходя из пути.

person Fabian Jakobs    schedule 02.10.2014
comment
Спасибо, в конце концов я решил просто разделить приложения на два отдельных проекта. - person xspydr; 02.10.2014
comment
Не могли бы вы объяснить подробнее? Я столкнулся с той же проблемой, что и Джейсон, и я не уверен, как установить/настроить ngix для проксирования запроса API на другой порт (например, 15001)? - person Doum; 08.01.2015

только если вы поместите API part, например, в app/controllers/api/posts_controller.rb. И установить для него route, например как домен myapp.com/api/posts.json или поддомен (api.myapp.com/posts.json)

person itsnikolay    schedule 01.10.2014
comment
Это сделало бы два приложения одним приложением. Я хочу держать их отдельно. - person xspydr; 01.10.2014
comment
затем вы должны запустить 2 отдельных процесса веб-сервера (unicorn, puma и т. д.) для каждого приложения и настроить nginx (apache) для обработки запросов URL-адресов к потокам приложений. - person itsnikolay; 01.10.2014
comment
Мой вопрос больше касается того, как этого добиться с помощью Cloud9 IDE. Я считаю, что моя конфигурация может быть достигнута без необходимости в другом уровне (например, единороге, пуме и т. д.), если C9 предоставляет альтернативные порты отладки. - person xspydr; 01.10.2014
comment
Привет, мы пока не предоставляем несколько открытых портов. Мой совет — использовать ssh-сервер. Имейте в виду, что предлагаемое решение с поддоменом не будет работать в C9. у нас есть только 1 поддомен для каждой рабочей области. Маршрутизация по-прежнему является хорошим вариантом. - person lcipriani; 02.10.2014

Похоже, этого нельзя делать. C9, по-видимому, предоставляет только один порт. Мне, скорее всего, нужно будет разбить приложения на отдельные проекты...

Как использовать grunt serve в Cloud9 IDE?

Технически я могу запустить приложение API на другом локальном порту, например:

rails server -p 15001 -b $IP

Затем я могу подключиться к нему с помощью запросов cURL или подключить к нему веб-приложение с этой конечной точкой.

curl -X GET http://localhost:15001

Это немного больно, но, по крайней мере, есть обходной путь.

person xspydr    schedule 01.10.2014