Несколько приложений с Ruby on Rails - PullRequest
4 голосов
/ 08 апреля 2010

Можно ли иметь одну установку Ruby on Rails с несколькими приложениями, которые имеют общую модель?

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

Это похоже на работу Symfony в PHP.

Заранее спасибо!

Ответы [ 3 ]

11 голосов
/ 08 апреля 2010

Самый простой способ иметь панель администратора - это использовать пространства имен. Вы просто помещаете все административные вещи в пространство имен администратора. Это очень распространенная практика.

С другой стороны, если вы хотите, чтобы два (или более) приложения совместно использовали одну и ту же базу данных и модели, это довольно просто. У меня есть один проект, в котором два приложения RoR используют одну и ту же базу данных. Вот мои мысли об этом:

  1. Я включил все миграции в свой первый проект. Это может быть грязно, если вы поместите их все (или их здесь мало) в обоих приложениях. Затем после миграции вы можете скопировать schema.db во второй проект или просто использовать символическую ссылку (в Unix-подобных системах) и больше не заботиться об этом.
  2. Если вы хотите поделиться какой-либо моделью в обоих приложениях, то вы можете скопировать файл модели или использовать символическую ссылку. Я использовал первый метод, потому что я не хотел копировать все связанные модели, которые я не использую во втором приложении.
  3. Отлично работает. Но в этом случае вам также необходимо настроить сервер для двух приложений. Я использовал разные субдомены для обоих приложений.

Надеюсь, это поможет!

2 голосов
/ 19 апреля 2013

предложение Клью сработало для меня.У меня есть полнофункциональный административный сервер, и мне нужно API-приложение, работающее по принципу бережливости и фокуса.

В конечном итоге я использовал гем rails_api для второго приложения и создал его под отдельной учетной записью.Я использую postgres в качестве базы данных.

Затем мне пришлось сделать следующее: отредактировать database.yml, чтобы использовать ту же базу данных, имя пользователя, пароль, что и другое приложение, а не копировать файлы, которые я использовал ln -s, я связал схему.rb и любые файлы model.rb, которые я хотел использовать в API.В этот момент я смог использовать консоль rails в приложении API.

Поскольку я использую гем rails_api, я явно пропускал маршруты.Вероятно, это хорошо, так как я смог вручную создать определенные маршруты по мере необходимости и больше ничего не выставлять в Интернет.

Я не выполняю никаких миграций в приложении API, все, кроме нечетных ссылокФайл model.rb сделан в моем исходном приложении.

Кажется, что работает хорошо, спасибо Klew!

0 голосов
/ 11 апреля 2018

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

Вот подробности в документации RoR http://guides.rubyonrails.org/engines.html

База примеров кода TaskRabbit, которая содержит исключительно подробное объяснение различных подходов

Добавление в этот старый вопрос, как я нашел эту тему на первый результат, как я искал в Google.Кроме того, вопрос довольно двусмысленный, поскольку можно фактически захотеть, чтобы приложение с двумя полностью отделенными приложениями запускалось из одной и той же среды RoR (почему? Не знаю ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...