Легковесный ORM - Sequel

Posted on February 27, 2008
Работа с базой данных - довольно дорогостоящий по вычислениям процесс, особенно при использовании ActiveRecord. Поэтому иногда возможно применение простого и легковесного ORM Sequel. От ActiveRecord его отличает меньшее количество возможностей, более близкое приближение к собственно SQL.

require 'rubygems'
require 'sequel'


DB = Sequel.sqlite #используем базу данных SQLite находящуюся в памяти

DB.create_table :items do #Создание таблицы в базе данных
      column :name, :text
      column :value, :float
end

items = DB[:items] #Создаем отображение таблицы в датасет

(1..10).each do |num|
  items << {:name => "some_item_#{num}", :value => num} #Заполнение таблицы тестовыми данными
end

items.print #Вывод на печать

После запуска на выходе получим таблицу

+------------+-----+
|name        |value|
+------------+-----+
|some_item_1 |    1|
|some_item_2 |    2|
|some_item_3 |    3|
|some_item_4 |    4|
|some_item_5 |    5|
|some_item_6 |    6|
|some_item_7 |    7|
|some_item_8 |    8|
|some_item_9 |    9|
|some_item_10|   10|
+------------+-----+

В Sequel DataSet схож с датасетом из c#, но в отличии от датасета c# завязан с базой данных более тесно
Для фильтрации записей в датасете используется метод filter например:

items.filter('value > 10')
#или
items.filter('value > ?', 10)
#или ещё правильней
items.filter {:value > 10}
Все эти конструкции сгенерируют SQL запрос SELECT * FROM items WHERE value > 10
Продолжение следует

Обзор микрофреймворка Sinatra

Posted on February 09, 2008
Все мощности рельсов иногда не требуются. Особенно если сайт - не что иное как 3-4 странички текста и форма отправки комментариев. В таком случае может очень помочь какой-либо микрофреймворк, например camping или Sinatra. Фреймворк выполнен на базе Rack который позволяет не беспокоится о способе коммуникации между веб сервером и фреймворком. Поэтому общий объем исходных кодов и тестов занимает 384 килобайта. По потреблению памяти Sinatra так-же очень непривередлива. Начать писать на Sinatra очень легко

require 'rubygems'
require 'sinatra'

get '/' do
  'Hello from Sinatra'
end

После запуска этого файла через комманду ruby test.rb Sinatra откроет порт 4567 и ответит на GET запрос /
Так-же Sinatra абсолютно нормально поддерживает запросы POST, PUT, DELETE
Роутинг очень похож на роутинг у camping.
Так-что мой выбор для небольших проектиков - sinatra.