Pull to refresh

Ruby is not Rails

Reading time3 min
Views4.9K
Последнее время о Ruby начали думать только как о Ruby on Rails. Но в мире Ruby ещё много красивых и иногда уникальных вещей. Поэтому, в целях борьбы с предрассудками, хочу вкратце рассказать о отличных и необычных Ruby-проектах.


Веб


Тем не менее Ruby больше известен как язык для Веба. Но Ruby on Rails далеко не единственный framework.

Merb

Основным его конкурентом считается Merb. Есть мнение, что у него более чистая разработка и красивый API.

Во-первых, он не привязан к каким-то ORM или JavaScript framework’ам. Вы можете использовать jQuery или ExtJS. Вы можете делать сайты без БД или использовать Sequel, чтобы выжать ещё скорости. И эта агностичность сразу заложена в архитектуру и идеологию.

Во-вторых, он разбит на под-проекты: merb-core с самым главным и пакеты для конкретных задач. Зачем вам скрипт генерации проекта на сервере?

В-третьих, он немного быстрее Ruby on Rails. Есть даже мнение, что его скорость уже может сравниться со скоростью PHP с framework’ом. Конечно это спорно, но может на вашей задаче он будет быстрее? :)

Многим нравиться реализация slice, когда вам надо написать MVC-модуль и реализация аутентификации. Плюс plug-in’ы для Merb — это обычные gem’ы.

Конечно, holy war «Rails vs. Merb» — бессмысленная затея, но посмотреть Merb всё равно стоит — вдруг он придётся вам по душе.

Sinatra

Sinatra — это «DSL для Веба». Формально, только система роутинга — идеал для минималиста :). Пусть лучше за меня скажет код:

require 'rubygems'
require 'sinatra'

get '/' do
  @name = request.cookies["name"]
  erb :index
end

post '/:name' do
  set_cookie "name", params[:name]
  redirect '/'
end

Скорость её вполне соответствует количеству кода ;). Если вы пишете небольшой проект, присмотритесь к Sinatra.

Другое

Вне статьи останутся Ramaze, Camping и много других. Посмотрите их сами :).

ORM


Тут вкратце:

DataMapper относиться к ActiveRecord, как Merb к Ruby on Rails. Чуть быстрее, местами красивее, так же поделена на под-проекты. Они с Merb даже «разделяют» часть кода — extlib.

Sequel — это даже не ORM, а скорее DSL для более простого написания SQL. Поэтому она и существенно быстрее.

Скрипты


Конечно большинство скриптов в Linux написана на Bash. Но Ruby прекрасная кандидатура для написания ваших личных скриптов (например, для какой-то особой организации фотоальбома). Он имеет лаконичный синтаксис и удобный API работы с окружением: для вызова команды нужно лишь указать её внутри ``, а IO.popen очень удобен, чтобы читать ответ команды. А наличие интерактивной Ruby-консоли очень полезно при разработке и отладки.

Rake представляет красивый синтаксис для сборки приложений — компактнее и понятнее Ant’а и Make.

Также посмотрите Sake и Thor, как «альтернативе» Rake.

Java


Если у вас есть нудный и некритичный к скорости код на Java (например, описание GUI или тесты), то почему бы не взглянуть на JRuby? Часто можно написать 40—60 % кода на Ruby и особо не потеряв в скорости выполнения (зато повысив скорость программирование и моральное удовольствие). Как минимум для прототипирования это будет очень удобно. Например, для GUI созданы красивые API, а для тестирования можно использовать старый-добрый DSL RSpec.

Ребятам из чистого Ruby тоже можно взглянуть «через мост» JRuby: Swing — очень неплохой кроссплатформенный GUI, да и в мире Java есть много уже хорошо отлаженных библиотек типа Processing.

Shoes


Раз мы затронули тему GUI, то нельзя не вспомнить Shoes. В ней не исповедуется, что интерфейс под каждой ОС должен выглядеть как родной. Наоборот, как в Вебе у каждой программы он должен быть собственным. Есть много приложений на Shoes, но мне особо понравилось Hackety Hack. Hackety Hack всё равно крут, хоть и на XUL :).

Ruby Arduino Development


Ну и под конец самое неожиданное — встраиваемые приложения :). Не знаю как, но ребята смогли с помощью RAD писать под микроконтроллеры Arduino. Конечно же с помощью красивого DSL.

Самый сумасшедший проект на RAD — бармен с приятным Ruby-синтаксисом:

drink 'Screwdriver' do
  serve_in 'Highball Glass'
  ingredients do
    2.ounces :vodka
    5.ounces :orange_juice
  end
end


P.S.: Конечно это не все интересные проекты. Если вы знаете ещё пару интересных вещей — напишите о них, их разработчики будут вам рады :).
Tags:
Hubs:
+55
Comments30

Articles

Change theme settings