Постройте структуру MVC на вершине Синатры - PullRequest
11 голосов
/ 25 февраля 2011

Я изучаю Синатру, и мне было интересно, знает ли кто-нибудь хороший способ создать структуру MVC для проекта с Синатрой. У меня есть некоторые идеи, но они кажутся мне слишком громоздкими.

Ответы [ 3 ]

24 голосов
/ 25 февраля 2011

Sinatra - это уже "VC" - у вас есть виды, отделенные от ваших маршрутов (контроллеров).Вы можете разбить его на несколько файлов, если хотите;подробнее об этом см. ответ (мой):
Использование Sinatra для больших проектов через несколько файлов

Чтобы добавить «M» (модель), выберите каркас базы данных.Некоторым нравится ActiveRecord .Некоторым нравится DataMapper .Есть много других, из которых вы можете выбрать.Я лично люблю и очень рекомендую продолжение .Мой ответ, связанный выше, также предлагает структуру каталогов и оболочку для включения моделей.Как только вы распределяете соответствующую логику между вашими моделями и контроллерами, у вас появляется «MVC».

Обратите внимание, что MVC - это не отдельные файлы, а разделение задач.Если вы настроили приложение Sinatra, как я предлагал выше, но ваши представления выбирают данные из ваших моделей, или у вас есть маршруты, напрямую генерирующие HTML (не через "помощник" ), то вы не будетедействительно есть MVC.И наоборот, вы можете сделать все вышеперечисленное в одном файле и при этом иметь приложение MVC.Просто поместите свою логику целостности данных в свои модели (и, что более важно, в саму базу данных), логику представления в своих представлениях и многократно используемых помощниках и логику отображения в своих контроллерах.

6 голосов
/ 25 февраля 2011

Если вы еще этого не сделали, стоит взглянуть на Padrino framework, который предоставляет набор компонентов для расширения Sinatra. Вы можете использовать некоторые или все Padrino, или просто посмотреть, как разработчики проекта подошли к вещам.

4 голосов
/ 25 февраля 2011

M легко - используйте ActiveRecord (или что-то еще). У меня есть подкаталог models, содержимое которого получает require d при загрузке моего приложения Sinatra.

V также просто - просто поместите ваши представления в подкаталоге views - Синатра будет искать там автоматически.

C , я думаю, возможно, можно обработать, поместив действия Sinatra с соответствующей группировкой в ​​отдельные файлы и загрузив их во время выполнения.

(Исповедь: я еще не создал комплекс приложений Sinatra, чтобы увидеть потребность в явных контроллерах - там, где требовалась такая большая структура, я начал с Rails)

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