Подходит ли Rails для использования с не-ориентированным на сеть приложением? - PullRequest
1 голос
/ 04 августа 2010

Мне кажется, что Rails сияет при создании веб-ориентированных приложений, таких как приложение интернет-магазина Depot, представленное в Agile book или Basecamp системе управления проектами.Суть этих приложений в их веб-интерфейсе, а Rails предоставляет вам инструменты для быстрого, простого и элегантного создания этих веб-приложений.

Но что, если у вас есть приложение с интерфейсом командной строки, для которого вы быхотели бы добавить интерфейс?Например, представьте себе приложение, которое обрабатывает файлы EDI сторонних производителей - оно получает их с FTP-сервера, анализирует их, вставляет данные в базу данных и отправляет отчеты по электронной почте.Расписание того, когда должно запускаться приложение, какие отчеты следует генерировать, кто должен получать электронную почту и т. Д., Настраивается в базе данных.И хотя основной целью приложения является обработка файлов EDI, и вы хотите запускать его через cron, вы хотели бы создать веб-страницу, чтобы пользователи могли управлять тем, какие отчеты они получают, как часто они их получают,и т.д.

И приложение командной строки, и веб-страница должны иметь доступ к одним и тем же данным в базе данных.Они должны быть в состоянии поделиться моделями и бизнес-логикой.Если приложение командной строки уже содержит библиотеку со слоем доступа к данным, есть ли способ использовать эту библиотеку в Rails?Или, наоборот, есть ли способ повторно использовать модели и контроллеры Rails во внешнем приложении?Или не имеет смысла использовать Rails в качестве веб-фреймворка в этом сценарии?

Ответы [ 2 ]

4 голосов
/ 04 августа 2010

Вы всегда можете просто включить библиотеку ActiveRecord (и ActiveSupport) в обычное приложение ruby, если вы просто хотите абстрагировать слой модели для приложения, ориентированного на БД.

2 голосов
/ 05 августа 2010

На самом деле, большинство приложений rails имеют веб-интерфейс, а также интерфейс командной строки - через rake.

Классическим примером являются пакетные задания, которые должны выполняться периодически, хотя cron или когда-либо.Но также возможно запускать эти задачи вручную.

Если бы я был вами, я бы попытался построить некоторые задачи rake внутри lib/tasks, чтобы отобразить эти команды командной строки.

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