Готовые веб-приложения на Ruby без использования каких-либо фреймворков — насколько сложно? Подводные камни?

Я рубиновый нуб. Кто-нибудь в этом сообществе написал приложение Ruby без каких-либо фреймворков? (редактировать: Моя цель — написать его самостоятельно.) Расскажите нам о своем опыте. Насколько это сложно? Какие самые низкие абстракции вы использовали? Какие подводные камни? Спасибо.


person unj2    schedule 09.04.2009    source источник
comment
Перефразированный заголовок - у меня возникло сильное искушение ответить «да» на исходный, что технически было правильным ответом :)   -  person Mihai Limbășan    schedule 09.04.2009
comment
Любой, кто не использует фреймворк, либо безумен, либо гений. Или оба.   -  person Ryan Bigg    schedule 09.04.2009


Ответы (2)


Это очень, очень широкий вопрос. Вы хотите написать свой собственный фреймворк или просто простое CGI-приложение (вы можете легко сделать это с помощью ERB).

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

Конечно, если вы сами все связываете, вы только что написали фреймворк. :)

Если нет, то вы написали ужасный беспорядок спагетти-кода.

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

Редактировать:

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

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

Если бы я мог вернуться назад и сделать что-то по-другому, я бы начал вносить свой вклад в уже существующие фреймворки, а не просто пытался «сделать это правильно» с нуля.

Теперь есть исключение из этого правила «сначала использовать работу других людей», и это когда у вас есть опыт работы с инструментами, чтобы знать, когда пришло время создавать что-то новое. DHH (парень, который запустил Rails) был программистом на Ruby очень долгое время, прежде чем он решил написать Rails.

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

person Don Werve    schedule 09.04.2009
comment
edit: Моя цель - написать фреймворк самостоятельно. Есть ли хорошие книги, посвященные CGI-приложениям и посвященные построению фреймворка? Спасибо. - person unj2; 09.04.2009
comment
Написание собственного фреймворка — неплохая идея. Большую часть времени существующие фреймворки хотят покрыть все возможные потребности в определенной области (например, web) и сделать так, чтобы 90% приложений в Интернете нуждались только в 10-строчных контроллерах и такой. А где остальные? Магия фреймворка!. Что, если что-то пойдет не так внутри фреймворка и магия исчезнет? Да, я всегда мог попросить о помощи, но как здорово было бы просто исправить это самому, потому что я точно знаю, что делает этот фрагмент кода? - person Shoe; 07.02.2013

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

Как минимум, вы должны рассмотреть возможность использования промежуточного программного обеспечения Rack, чтобы облегчить себе жизнь — подключите свое приложение к Rack. и использовать Rack для размещения сайта через Passenger, Thin, Mongrel и т. д.

person AdminMyServer    schedule 09.04.2009