В каких сценариях можно использовать Sinatra или Merb?
Вопрос
Я изучаю Rails и очень мало знаю о Sinatra и Merb.Мне было интересно, в каких ситуациях вы будете использовать Merb/Sinatra.
Спасибо за ваш отзыв!
Решение
Sinatra — гораздо меньший и более легкий фреймворк, чем Rails.Он используется, если вы хотите быстро запустить что-то, что просто отправляет несколько URL-адресов и возвращает простой контент.Взгляните на Домашняя страница Синатры;это все, что вам нужно, чтобы запустить «Hello, World», в то время как в Rails вам нужно будет сгенерировать всю структуру проекта, настроить контроллер и представление, настроить маршрутизацию и так далее (я этого не делал). давно написал приложение на Rails, поэтому я не знаю точно, сколько шагов занимает «Hello, World», но это определенно больше, чем у Синатры).Sinatra также имеет гораздо меньше зависимостей, чем Rails, поэтому его проще установить и запустить.
Мы используем Sinatra в качестве веб-сервера быстрого тестирования для некоторых библиотек веб-клиентов, которые сейчас пишем.Тот факт, что мы можем написать один единственный файл и включить в него всю нашу логику и иметь очень мало зависимостей, означает, что с нашими тестами намного проще работать и запускать их, чем если бы у вас было приложение Rails.
Мерб объединяется с Rails, так что довольно скоро не будет никакой причины использовать один вместо другого.Первоначально он был разработан так, чтобы быть немного легче и более несвязным, чем Rails;В Rails было больше встроенных предположений, что вы будете использовать ActiveRecord.Но, объединяя их, они аналогичным образом отделяют Rails, поэтому, если вы уже изучаете Rails, то, вероятно, стоит просто придерживаться этого и следить за развитием событий по мере их поступления.
Другие советы
Я не могу много говорить о Merb, но Sinatra очень эффективен для небольших или легких решений.Если вы не работаете с большим количеством кода или вам не нужен огромный веб-сайт, вы можете написать очень эффективный сайт с помощью Sinatra либо так же быстро, либо в два раза быстрее, чем на Rails (по моему мнению).
Sinatra также отлично подходит для фрагментарных частей приложения, например, для интерфейса пакета статистики.Или что-то вроде ЭррКаунт, который представляет собой очень простой счетчик посещений.
Поэтому при использовании Sinatra подумайте о легких, быстрых и очень упрощенных веб-приложениях (хотя сложность — на ваш выбор).
Судя по тому, как идут дела, скоро этот вопрос станет спорным.
Как уже упоминалось, 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:они могут жить вместе.Есть сообщение в блоге, в котором обсуждается эта самая концепция