Подтвердить что ты не робот

Rails 3 против Sinatra

Для моего следующего веб-приложения я обсуждаю, использовать ли Rails 3.x или Sinatra.

Я хотел бы использовать сервер для предоставления аутентификации пользователей, приложений, запускаемых по электронной почте, довольно сложной модели данных (за ActiveRecord) и интерфейса данных JSON с веб-клиентом. Клиентская сторона будет использовать статический HTML, статический CSS, Javascript/jQuery, чтобы отображать данные JSON в представлениях. "Политика" для представления представлений будет определяться кодом Javascript и некоторыми данными JSON. Я не планирую использовать какие-либо технологии динамического просмотра, такие как ERB, HAML или RJS.

Было бы лучше с Sinatra или Rails 3.x?

Есть ли еще вопросы, которые я должен задать перед тем, как принять это решение?

4b9b3361

Ответ 1

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

Sinatra предназначена для обработки легких архитектур программного обеспечения. Если вы выберете Sinatra, вы, вероятно, столкнетесь с проблемами дизайна и организации, которые вам придется решать самостоятельно. Rails реализует шаблон MVC и может помочь вам организовать ваш код, предлагая множество полезных механизмов.

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

PS: ActiveRecord доступен как в Sinatra, так и в Rails.

Ответ 2

Sinatra будет очень хорошим выбором, и я чувствую, что это будет лучше, чем рельсы, в основном по одной причине. Это связано с тем, что другой пользователь написал "Вы следуете соглашениям и шаблонам, которые гарантируют, что ваше приложение будет легко обслуживаться и будет хорошо масштабироваться.

Несколько лет назад мы разработали довольно большое приложение в рельсах. Все наши разработчики должны были сделать полную переписку, потому что ядро ​​рельсов (чтение 37 сигналов) не заботится о том, чтобы их новая версия была обратно совместимой. При каждом обновлении код прерывается.

Таким образом, его кодирование в Rails не гарантирует ремонтопригодность или масштабируемость. Наоборот.

Фактически масштабируемость будет лучше на Синатре, поскольку она более легкая, и вы все равно должны использовать пассажира для развертывания. Сообщество Sinatra не шутит и очень полезно. Нет никаких примадонн, большого эго в той же степени Rails. И это имеет значение, поскольку повестка дня Rails может отличаться от вашей, и вы можете в конечном итоге переписать код очень скоро. Есть новая книга о Синатре О'Рейли, которую я считаю заслуживающей внимания, поскольку она полна примеров и идей о том, что можно сделать и как.

Ответ 3

У меня есть одна и та же задача сделать существующее приложение rails, которому теперь нужен интерфейс json для внешних устройств (приложения для iPhone и Android). Очень рекомендую использовать синатра-activerecord, чтобы вы могли просто включить все свои модели в свое приложение для синатры. Таким образом, вам не нужно переписывать свою бизнес-логику.

Загрузите существующие модели в приложение для синатра следующим образом: set: database, URI.encode( "# {db_settings ['adapter']}://# {db_settings ['username']} @# {db_settings ['host']}/# {db_settings ['database']}" ) require './data/models/user.rb'

И db_settings загружает его настройки из базы данных .yml(в том же формате, что и рельсы) для этого используется камень yaml_db;). Таким образом ваше приложение-синатра может повторно использовать все модели и даже файлы конфигурации из приложения rails.

Ответ 4

Зачем вам когда-либо использовать Rails? Вам нужны генераторы шаблонов?

Написание приложения с помощью Sinatra или просто чистой стойки так же просто, как и в Rails, и вы получаете сверхскоростную скорость для всего, что вы делаете.

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

Создание всего в микро-сервисах и добавление настраиваемого промежуточного ПО чувствует себя намного более естественным с Sinatra и Rack.

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

Ответ 5

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