Posterous theme by Cory Watilo

Rails: first steps

Робко и нерешительно я начал делать первые шаги по рельсам. И что я могу сказать - мне нравится. Первое с чем я пока столкнулся - с ковырянием в БД. Реализация - просто зверь! Миграции - это нечто. Итак, для начала имеем пустую миграцию - версия 0. Далее была создана миграция (автоматом) v1. Что есть миграция? Вот что: [cc lang="rails"] class CreateNews "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci" do |t| t.column :title, :string, :limit=>255, :null => false t.column :teaser, :text, :null => false t.column :body, :text, :null => false t.column :created_at, :datetime, :null => false t.column :updated_at, :datetime, :null => false end end def self.down drop_table :newsend end[/cc] По привычке у меня установлен mysql (v5). И когда первый разописал структуру, тотекстовые данные сплошь были latin1. Потому в опциях добавил кодировку. Но после этого таблица стала не InnoDB! Оказалось, что по умолчанию рельсы создают таблицы типа InnoDB, если другое не указано в опциях. Как только добавляешь опции - требуется указать и таблицу. Ну вот и указал. У многих возникает вопрос: а зачем же описывать структуру БД в коде? А для того, чтоб можно было красиво и легко переходить между изменениями, внесенными в процессе разработки. И не говорите, что БД спроектированная в начале работы над проектом не меняется никогда- не поверю, сам давно так думал, но всегда что-то но менялось. И вот можно в следующей миграции описать какие поля добавить, что где поменять и т.п. - и в консоли на сервере сделать rake db:migrate VERSION=x. Разве это не удобно? Например, при откате на предыдущую версию тут же можно описать какие действия выполнять. Ну и кроме миграций есть еще один плюс, который бросился мне в глаза: ведь эту же структуру не изменяя (вероятней всего, еще не пробовал) можно загнать и в PostgreSQL, и хоть в оракл. И после этого - вот такой код для выбора всех новостей: [cc lang="rails"] def index @news = News.find(:all) end[/cc] После написания таких кусочков задумался, а как же реализованы шаблоны и сильно порадовался - есть такая штука как layout и, собственно, view. View используется для отображения конкретного куска, а layout и есть шаблон всей страницы. Layout: [cc lang="rails"] [/cc] View: [cc lang="rails"]
[/cc] Вот что я могу сказать о первых своих шагах - жутко нравится.
| Viewed
times
Filed under: