Веб-приложение на Ruby. С чего начать?

Решил тут портировать одно PHP приложение на Ruby. Не сколько с целью портировать для практического использования, сколько с целью получить опыт. Сначала начал делать как CGI приложение, отлаживая в консоли. Потом захотелось увидеть в браузере, увидел, захотелось потестировать на скорость — ужаснулся. Решил искать варианты. Вот, что нашёл:

1. TCPServer — как-то не вдохновляет

2. Различные веб-сервера и модули к апачу/nginx — понял, что разницы особой нет

3. Rack — из-за него и нет разницы :) как я понял аналог WSGI в Python

4. Sinatra — вроде всё просто и сходу не скажешь чего не хватает, похож на WebOb с первого взгляда или типа голого PHP :) Написал и сразу понял чего не хватает — работы с формами и привязка их к БД

5. RoR — как-то всё сильно инкапсулировано, по-моему для первого знакомства мало годится, это как начинать изучать PHP с symfony или Yii. Вроде едет, а что под капотом происходит…



Вот стою на распутье, как быть дальше. 1 и 2 отпадает — raw HTTP обрабатывать не хочется. Колеблюсь между Rack и Synatra. Или всё же Rails? :-/ Что больше научит решать различные реальные проблемы, но в тоже время не создавая искусственных? Может ещё какой вариант?
  • Вопрос задан
  • 6719 просмотров
Пригласить эксперта
Ответы на вопрос 4
andoriyu
@andoriyu
>Sinatra — вроде всё просто и сходу не скажешь чего не хватает, похож на WebOb с первого взгляда или типа голого PHP
> типа голого PHP
/0

Начни с Sinatra, разберись в ruby, переключись на RoR.

Еще есть Padrino и Grape, первый это синатра со свистелками перделками, второй тоже самое, но для создания RESTful API
Ответ написан
taliban
@taliban
php программист
Вы же сами ответили на свой вопрос.
У Вас по сути стоит выбор между 3, 4 и 5
4 — сразу высказали два минуса, 5 — сразу обречли на непригодность использования в качестве знакомства… Какой вариант остался?
Ответ написан
philpirj
@philpirj
Подмена понятий detected.

Rack — интерфейс между веб-сервером и веб-фреймворком. Стандарт де-факто. Без него никуда.
Passenger — модуль для apache/nginx для запуска Rack.
Thin, Ebb,… — веб-сервера, не требующие apache/nginx.
Sinatra/Padrino/Rango/RoR/… — веб-фреймворк.

Я бы начал с Sinatra + Thin.
Потом можно подключить к Siantra Padrino (по функциональности практически Rails, но гораздо более модульный и человеческий), и постепенно на него перейти совсем.

RoR всё равно нужно хорошо знать.

Для продакшн применения используют разные варианты. На текущем у меня nginx+Passenger+RoR.

Стоит также изучить:
— DataMapper/ActiveRecord/Sequel для связи с БД;
— HAML/Erb для шаблонов;
— Compass/SASS для шаблонов CSS.

Удачи!
Ответ написан
@Kane
Вы просто не поняли всей красоты Синатры. Это фреймворк который не навязывает вам выбор ORM и шаблонизатора. Он даже не навязывает вам паттерн MVC (Но вы можете его использовать). Вот неплохой пример приложения на Sinatra.

Так же могу посоветовать посмотреть на фреймворк Padrino. Как написано у них на сайте, это «The Elegant Ruby Web Framework». И это правда. Padrino, как и Sinatra не навязывает используемые библиотеки. Так вы можете самостоятельно выбрать ORM, шаблонизатор html и css, тип базы данных (поддерживаются не только реляционные БД) и библиотеки для тестирования. При этом Padrino имеет генераторы в стиле Rails и по сравнению с Синатрой сильно сокращает рутину.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 80 000 до 220 000 руб.
от 80 000 до 150 000 руб.
Shore Мюнхен
от 62 000 до 72 000 eur.
21 янв. 2020, в 03:32
3000 руб./за проект
21 янв. 2020, в 01:35
3000 руб./за проект