Я рубиновый нуб. Кто-нибудь в этом сообществе написал приложение Ruby без каких-либо фреймворков? (редактировать: Моя цель — написать его самостоятельно.) Расскажите нам о своем опыте. Насколько это сложно? Какие самые низкие абстракции вы использовали? Какие подводные камни? Спасибо.
Готовые веб-приложения на Ruby без использования каких-либо фреймворков — насколько сложно? Подводные камни?
Ответы (2)
Это очень, очень широкий вопрос. Вы хотите написать свой собственный фреймворк или просто простое CGI-приложение (вы можете легко сделать это с помощью ERB).
Самая большая ошибка, которую я вижу в неиспользовании фреймворка (включая тот, который вы написали), заключается в том, что другим людям будет намного сложнее понять, что делает ваш код и почему. Кроме того, вы теряете все автоматизированное тестирование, привязку данных, упаковку, генерацию документов и другие преимущества, которые связывают воедино фреймворки.
Конечно, если вы сами все связываете, вы только что написали фреймворк. :)
Если нет, то вы написали ужасный беспорядок спагетти-кода.
Что бы я сделал, поскольку вы начинающий рубист, прочитал исходный код Rails (или Sinatra) и попытался выяснить, что он делает. Не потому, что это обязательно отличный пример, а потому, что ваше понимание веб-фреймворков будет намного более полным, если вы погрузитесь в пару. И это очень и очень ценно.
Редактировать:
Я просмотрел несколько других ваших сообщений, и похоже, что вы студент, поэтому я собираюсь предостеречь вас от написания собственного фреймворка не потому, что это плохая идея сама по себе, а из-за того, что программный фреймворк представляет -- а именно, сумму многолетнего опыта работы с языком X.
Программисты как бобры — мы хотим строить. Мы хотим создавать все сами, всегда стремясь исправить недостатки существующих инструментов. Хотя это очень благородная вещь, она приводит людей к тому, что они делают очень мало, потому что они не желают использовать инструменты, написанные другими людьми, часто по незначительным, косметическим причинам. В этом особенно виноваты молодые программисты, и я ничем не отличался — я потратил буквально годы на написание веб-серверов и слоев абстракции базы данных вместо того, чтобы писать программное обеспечение, на котором я мог бы заработать деньги.
Если бы я мог вернуться назад и сделать что-то по-другому, я бы начал вносить свой вклад в уже существующие фреймворки, а не просто пытался «сделать это правильно» с нуля.
Теперь есть исключение из этого правила «сначала использовать работу других людей», и это когда у вас есть опыт работы с инструментами, чтобы знать, когда пришло время создавать что-то новое. DHH (парень, который запустил Rails) был программистом на Ruby очень долгое время, прежде чем он решил написать Rails.
Как новичок в Ruby, вы, вероятно, лучше читаете то, что приготовили другие люди, и исправляете/улучшаете это, а не просто начинаете самостоятельно. Вы узнаете больше о языке, внесете ценный вклад в сообщество и получите хорошее резюме.
Вы должны спросить себя, почему вы хотите это сделать. Простая структура, такая как Sinatra, действительно не будет мешать вам. Это только для обучения?
Как минимум, вы должны рассмотреть возможность использования промежуточного программного обеспечения Rack, чтобы облегчить себе жизнь — подключите свое приложение к Rack. и использовать Rack для размещения сайта через Passenger, Thin, Mongrel и т. д.