RDR3R > Single Table Inheritance (STI) в Rails 3

июля 26, 2011  |  Published in Ruby on Rails, Ruby on Rails 3

Пришло мне тут два письма с просьбой написать о STI — наследовании от одной таблицы. Материал достаточно простой, однако, если люди просят — почему не уделить написанию статьи пол часика?

Признаться честно, мне не нравится термин STI применительно к Rails, поскольку на самом деле наследуются не таблицы, а классы. Здесь больше подходит термин Class Table Inheritance поскольку один класс наследуясь от другого получает доступ к таблице основного класса.

Разберемся с терминами.

Базовый класс — это класс от которого наследуются все остальные классы.

Наследуемый класс — здесь все понятно.

Для чего необходимо STI? — STI достаточно удобная штука и используется в двух основных случаях:

1. У нас имеются две и более моделей, которые имеют абсолютно одинаковые атрибуты, но должны вести себя по разному.

2. У нас имеются две и более моделей, которые имеют несколько общих атрибутов, общие атрибуты выносятся в отдельную таблицу и отдельную модель — базовый класс.

Read the rest of this entry »

Tags: , , ,

RDR3T > Первая кровь: Структура приложения, первая модель и контроллер

марта 19, 2011  |  Published in Ruby on Rails, Ruby on Rails 3

В прошлой главе мы занимались тем, что создавали себе рабочую среду и создали свое первое приложение на Rails 3. В этой главе RubyDev Rails 3 Tutorial вы еще ближе познакомитесь со структурой приложения Rails, с Git и Bundler, а также создадите свою первую модель и контроллер и узнаете о том, что такое BDD и RSpec.

Прежде чем начать, давайте разберемся с некоторой терминологией: фреймворк Rails построен на основе нескольких принципах, которые очень важно знать любому программисту!

CoC (Convention over Configuration — Соглашение прежде конфигурации) — согласно этому принципу Rails содержит набор соглашений касательно структуры проекта, именования файлов и директорий, а также классов, модулей и так далее. Благодаря этому приложение на Rails избавляется от лишней настройки приложения, чем гораздо ускоряет разработку. Этот принцип вовсе не значит, что приложение на Rails не настраиваемо, Rails как раз таки один из самых гибких фреймворков для веб разработки. Этот принцип означает лишь, то, что мы избегаем лишней конфигурации и приближаемся к стандартизации.
Read the rest of this entry »

Tags: , , , , , , ,

Mongoid #2: Документы

марта 16, 2011  |  Published in Базы данных

mongoid logoДанная статья является переводом официальной документации:

Документы — основные объекты в Mongoid и любой объект, который сохраняется в базу данных должен включать в себя через include Mongoid::Document. Представлением документа в MongoDB является BSON-объект, который очень похож на хэш в Ruby или объект формата JSON. Документы могут храниться в своих собственных коллекциях в базе данных или могут быть включены в другие документы таким образом имея некую степень вложенности.

Объявление документов в Mongoid

Рассмотрим простой класс — модель человека. У каждого человека должны быть имя, фамилия и отчество. Мы можем объявить эти атрибуты человека объявив соответствующие поля (поле — field) в объекте представляющем человека. В Mongoid поля, по умолчанию, имеют тип String.

#person.rb
class Person
  include Mongoid::Document
  field :first_name
  field :middle_initial
  field :last_name
end

Read the rest of this entry »

Tags: , ,

Mongoid #1: Установка

марта 1, 2011  |  Published in Базы данных

mongoid logoДанная статья является переводом официальной документации:

Для работы с MongoDB, из Ruby, необходимо установить gem Mongoid:

$ gem install mongoid —pre

Для исправления производительности, вы должно быть захотите установить расширения для Mongo написанные на Си, которые совместимы с вашей системой:

$ gem install bson_ext

Read the rest of this entry »

Tags: , , ,

Мелкопост о MongoDB и Mongoid

марта 1, 2011  |  Published in Базы данных, Новости

mongoDBДобрый день, уважаемые читатели блога! Пишу сей пост с радостью, поскольку появился повод разобраться наконец-то с тем, что такое документо-ориентированные базы данных и с чем их едят. А это означает, что на RubyDev будет новый цикл статей, в первую очередь переводов официальной документации по MongoDB — документо-ориентированной базе данных, и Mongoid — библиотеке для работы с MongoDB в Ruby. В первую очередь начну с перевода документации по Mongoid, а дальше пойдет перевод документации по самой MongoDB и различных статей на тему.

Что же такое документо-ориентированные базы данных? В первую очередь хочу сказать, что пока я сам не очень разобрался, поэтому буду благодарен на правки в комментариях. Документо-ориентированные БД — это в первую очередь NoSQL базы данных. Во-вторых, документо-ориентированные базы данных, как видно из названия ориентируются на такие структуры данных, как «документ», в отличие от таблиц, которые используются в реляционных БД типа MySQL или PostgreSQL.

Что такое документ? - Документ, это грубо говоря венегрет из различных данных, ну или, техническим языком говоря, документ можно назвать многомерным ассоциативным массивом. В MongoDB для хранения данных используется формат BSON — бинарный эквивалент формата JSON.

Как установить MongoDB?
Установка предельно проста, идем сюда: , скачиваем подходящую стабильную версию и просто распаковываем содержимое в любую необходимую нам папку.

Чтобы запустить сервер MongoDB, необходимо запустить файл mongod:

$ ./mongod —dbpath data/db

Где параметр —dbpath указывает путь, где хранится база данных. По умолчанию MongoDB, хранит файлы в папке data/db, которую вам необходимо создать самостоятельно и правильно выставить права доступа, однако у меня что-то не завелось и мне приходиться каждый раз указывать папку с БД вручную.

Все, теперь вы имеете MongoDB на борту! Ждите в ближайшее время перевода официальной документации по Mongoid.

Tags: ,

Rails 3 Tutorial: Модели: Простая выборка данных

февраля 20, 2011  |  Published in Ruby on Rails, Ruby on Rails 3

Ruby on Rails 3Прежде чем начачать, нам необходимо создать модель, таблицу и записи в таблице. Как это сделать читайте в статье Rails Tutorial: Модели: Введение. Итак, нам необхобима модель Person (id: integer, name: string, last_name: string, age: integer, sex: string, created_at: datetime, updated_at: datetime).

В этой статье мы рассмотрим следущие простейшие методы выборки или поиска данных:

.all
.first
.last
.find
.where
.order
.limit

… а также обслуживаемые с помощью method_missing методы:

find_by_
find_by_*_and_*
find_all_by_
find_all_by_*_and_* Read the rest of this entry »

Tags: , , ,

Rails 3 Tutorial: Модели: Введение

февраля 19, 2011  |  Published in Ruby on Rails, Ruby on Rails 3

Ruby on Rails 3По многочисленным просьбам в количестве 9 штук, начинаю рубрику  на RubyDev — Rails 3 Tutorial в которой я пройдусь по всем составляющим фреймворка Rails, а затем пойдут более практичные и подробные статьи, например о деплое, о внутреннем устройстве Ruby on Rails и т.д.. Учебник не будет самодостаточным, часто на страницах учебника я буду ссылаться на самостоятельные статьи. Ах да, еще статьи будут публиковаться в не  правильном порядке, статьи размещенные в правильной последовательности вы найдете на специальной странице, которую я создам, когда их наберется несколько штук.

Существует такой шаблон / подход к разработке приложений, как MVC, который состоит в том, что приложение разбивается на 3 части: Model, View и Controller, каждая из которых выполняет свою определенную роль. В этой статье я не буду рассказывать о том, что такое MVC, просто скажу, что такой подход к разработке хорош тем, что при внисении изменений в одну часть приложения, программисту, по идее, не нужно переписывать все приложени.

Model — модель, это та часть приложения, которая отвечает за работу с данными. В Rails модель реализована в виде ActiveRecord, однако, благодаря модульности привнесенной в Rails из Merb, вы можете использовать другие средства работы с базой данных, например DataMapper или Sequel. В данном цыкле статей речь будет идти лишь о ActiveRecord, однако, в будущем, возможно, будут опубликованы статьи по работе с DataMapper и Sequel.
Read the rest of this entry »

Tags: , , ,

Установка базы данных SQLite 3 на Windows и Ubuntu

октября 3, 2010  |  Published in Help, Базы данных

sqlite3 sqlite 3Часто на форумах вижу вопросы связанные с установкой БД SQLite3 на Windows, по этому и решил написать данную How To — статью.

Установка базы данных SQLite 3 на Windows

1. Скачиваем с sqlite-3_7_2.zip и sqlitedll-3_7_2.zip либо более свежие версии (на момент написания поста актуальная версия — 3.7.2).

2. Распаковываем содержимое обеих архивов в папку WINDOWS/system32. В архивах содержится всего 3 файла:

sqlite3.exe  sqlite3.def  sqlite3.dll

3. Теперь SQLite 3 установлена в нашей системе, но для того, чтобы мы могли ее использовать в наших проектах на Ruby on Rails, нам следует установить Ruby-интерфейс для работы с SQLite 3, который поставляется в виде gem’а — sqlite3-ruby:

gem install sqlite3-ruby

Установка SQLite 3 на Ubuntu Linux

1. Устанавливаем пакеты sqlite3 и libsqlite3-dev:

sudo apt-get install sqlite3 libsqlite3-dev

2. Устанавливаем gem sqlite3-ruby:

sudo apt-get install sqlite3-ruby

Все! теперь мы можем работать с базой данных SQLte 3.

Tags: ,