В каких сценариях можно использовать Синатру или Мерб? - PullRequest
5 голосов
/ 09 апреля 2009

Я изучаю Rails и очень мало знаю о Sinatra & Merb. Мне было интересно, в каких ситуациях вы бы использовали Merb / Sinatra.

Спасибо за ваш отзыв!

Ответы [ 3 ]

7 голосов
/ 09 апреля 2009

Sinatra - намного меньший, более легкий весовой каркас, чем Rails. Он используется, если вы хотите быстро запустить что-то, что просто отправляет несколько URL-адресов и возвращает простой контент. Взгляните на домашнюю страницу Синатры ; это все, что вам нужно для запуска и запуска «Hello, World», в то время как в Rails вам нужно будет создать целую структуру проекта, настроить контроллер и представление, настроить маршрутизацию и т. д. (у меня нет я написал приложение на Rails, так что я не знаю точно, сколько шагов "Hello, World", но это, безусловно, больше, чем Sinatra). Sinatra также имеет гораздо меньше зависимостей, чем Rails, поэтому его проще устанавливать и запускать.

Мы используем Sinatra как быстрый тестовый веб-сервер для некоторых библиотек веб-клиентов, которые мы пишем сейчас. Тот факт, что мы можем написать один файл и включить всю нашу логику в этот файл и иметь очень мало зависимостей, означает, что работать с нашими тестами и выполнять их намного проще, чем если бы у вас было приложение Rails.

Merb объединяется с Rails , поэтому довольно скоро не должно быть никаких причин использовать один поверх другого. Первоначально он был спроектирован так, чтобы быть немного более легким и более отсоединенным, чем Rails; В Rails было больше встроенных допущений, что вы будете использовать ActiveRecord. Но так как они объединяют два, они разделяют Rails похожим образом, поэтому, если вы уже изучаете Rails, то, вероятно, стоит просто придерживаться этого и следить за развитием событий по мере их поступления.

2 голосов
/ 09 апреля 2009

Я не могу много говорить о Merb, но Sinatra очень эффективен для небольших и легких решений. Если вы не работаете с большим количеством кода или не нуждаетесь в огромном веб-сайте, вы можете написать очень эффективный сайт с помощью Sinatra либо со скоростью, либо в два раза быстрее, чем на Rails (по моему мнению).

Sinatra также отлично подходит для фрагментарных частей приложения, например, для внешнего интерфейса статистического пакета. Или что-то вроде ErrCount , который является просто простым счетчиком посещений.

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

1 голос
/ 09 апреля 2009

Как идут дела, скоро это станет спорным вопросом.

Как уже упоминалось, Merb 2.0 и Rails 3.0 будут одним и тем же. Недавно объединенные основные команды Merb и Rails уже работают над достижением этого. Я не знаю, планируют ли они выпустить (возможно, бета-версию) RailsConf в мае, но это определенно произойдет в этом году.

Если вы не используете, например, ORM, отличный от ActiveRecord, вы можете начать с Merb и обновить его, когда выйдет 2.0 (Rails 3.0). В настоящее время принято считать, что Merb предоставляет лучшую платформу для изменения компонентов, чем Rails.

Sinatra выглядит как блестящее решение для веб-приложения, которое имеет низкую сложность интерфейса и несколько меньший код на уровне модели, чем было бы нормально для Merb / Rails. Реализация простых API-интерфейсов RESTful была бы отличным вариантом. Я менее убежден в его ценности, когда речь идет о любом количестве HTML, и даже меньше, когда речь идет о шаблонах.

Опять же, поскольку Rails (а, следовательно, и скоро Merb) сейчас находится на вершине Rack, нет никаких причин не включать приложения Sinatra для младенцев в решение: они могут жить вместе. Есть пост в блоге, в котором обсуждается именно эта концепция

...