февраля 9, 2012 | Published in Ruby on Rails, Ruby on Rails 3
RubyDev — ваш друг в изучении Ruby и Rails!
Эта статья представляет собой краткое введение в веб-фреймворк Ruby on Rails. Она расскажет вам о том, что такое веб-фреймворки, какие выгоды от использования они дают разработчику и как Rails выделяется среди остальных веб-фреймворков. Кроме того в этой статье мы рассмотрим устройство приложения разрабатываемого на Ruby on Rails, архитектурный паттерн MVC, принципы CoC и DRY.
Что такое веб-фреймворк?
Программный фреймворк — это каркас приложения, который избавляет разработчика от рутинной работы и навязывает ему некоторые правила хорошего тона, архитектуру приложения и т.д. Другими словами фреймворк позволяет программисту писать меньше кода за счет использования кода написанного разработчиками фреймворка, которые зачастую более опытны.
Веб-фреймворк — соответственно фреймворк ориентированный на разработку веб-приложений.
Read the rest of this entry »
ноября 3, 2011 | Published in ClientSide, CSS и верстка, Ruby on Rails, Ruby on Rails 3, View
Вот и дошли мои руки, ноги и сознание до изучения такой штуковины, как SASS / SCSS.
SASS — это синтаксический сахар для CSS. Аббревиатура SASS расшифровывается как Syntactically Awesome StyleSheets.
SCSS — это новое название SASS начиная с 3й версии и расшифровывается как Sassy CSS. Основное отличие SCSS — это улучшенная поддержка CSS3 и то, что в SCSS можно писать на каноническом CSS (можно сказать, что SCSS является надмножеством CSS).
SCSS позволяет писать стили вашего приложения с использованием очень мощных расширений стандартных возможностей CSS: возможности использовать переменные в стилях, подмешивания примесей, удобный синтаксис объявления стилей вложенных элементов и т.д. Все это мы рассмотрим в нашей статье, но не просто рассмотрим, а рассмотрим на примере использования в приложении на Rails.
Я уже писал на RubyDev об использовании языка HAML в Rails и с тех пор я стал его активно использовать вместо стандартного ERB. В этой статье я расскажу об SASS / SCSS. SASS / SCSS является проектом созданным под вдохновением от HAML, кроме того, чаще всего SCSS и HAML используются вместе. Эту статью о SASS / SCSS и статью о HAML можете считать предисловием к грядущим статьям по Compass и AssetsPipeline в Rails 3.1. Конкретно в данной статье рассматривается использование SASS / SCSS в приложении на Rails 3.0.9.
Read the rest of this entry »
октября 5, 2011 | Published in Ruby on Rails, Ruby on Rails 3
Callbacks — колбеки (обратные вызовы) — это вызов методов как реакция на какое-нибудь действие объекта. Коллбеки привязываются к определенным методом и могут быть выполнены до или после вызова метода к которому они прикреплены. Например, когда в Rails вы используете ассоциацию с зависимостью, например такую:
Post has_many :comments, :dependent => :destroy
То после действия destroy для объекта — записи запускается соответствующий after_destroy коллбек, который выполняет удаление всех принадлежащищ Post’у комментариев.
В Rails существуют коллбеки модели и колбеки контроллеров, в Sinatra (Rack) существуют коллбеки обработчиков запроса, даже в RSpec существуют коллбеки before и after для подготовки и удаления данных для спецификаций.
Read the rest of this entry »
октября 2, 2011 | Published in ClientSide, Ruby Gems, Ruby on Rails, Ruby on Rails 3, View
HAML — очень удобный язык разметки который призван заменить HTML. HAML это также шаблонизатор, который компилирует код на HAML + Ruby в HTML, который представляется пользователю.
Мне надоел стандартный ERB, надоели закрывающие теги, надоело, что порой бывает сложно понять что во что вложено, и я решил полностью перебраться на HAML. Если вы еще не слышали о HAML, то это не означает, что HAML — это что-то экзотическое, напротив, HAML использует большинство Rails разработчиков, так активно используют, что даже удивились, почему Rails Core Team невключили HAML в Raila 3.1. как шаблонизатор по умолчанию.
Начать работу с HAML совсем просто!
Read the rest of this entry »
августа 24, 2011 | Published in Ruby on Rails, Ruby on Rails 3
В предыдущей статье мы сделали самую простую пагинацию, которая выводит ссылки на все существующие страницы. В этой статье мы несколько расширим функционал.
Для начала откроем хелпер постов:
#../app/helpers/posts_helper.rb
module PostsHelper
end
В этот хелпер мы поместим весь код отвечающий за представление ссылок пагинации.
Сразу оговорюсь (предсказывая гневные комментарии типа: «Что за говнокод?»), что данная статья не ставит целью описать окончательный вариант разработки пагинации. Рефакторинг, добавление конфигурирования представления ссылок и т.д. будет рассмотрено в следующей статье или статьях. Это пошаговое руководство разработки пагинации, которое показывает не только правильный вариант пагинации, но и попутно демонстрирует распространенные у новичков ошибки.
В моей реализации пагинации я буду использовать три стандартных варианта представления:
- Вывод ссылок на все страницы,
- Вывод ссылок на первую и последнюю страницы а также ссылок на две предыдущие и две следующие страницы по отношению к текущей,
- Вывод ссылок на предыдущую и следующую страницы по отношению к текущей.
Read the rest of this entry »
августа 23, 2011 | Published in Ruby on Rails, Ruby on Rails 3
Для совсем молодых: Пагинация — это разбирие контента на страницы, например у вас есть 1000 статей и выводить их все на одной странице — очень жестоко по отношению к посетителю сайта. Вместо вывода всего содержимого на одной странице, мы разбиваем его на страницы, например по 10 статей на страницу и предоставляем ссылки на другие страницы.
Я отношусь к той когорте людей, что считает, что использование различных гемов для пагинации типа kaminari или will_paginate является лишним, точнее избыточным и не достаточно гибким. Кто-то может бросить в меня камень или помидор со словами: «Необходимо использовать готовые протестированые решения, а не писать свои велосипеды!», и будет прав, но, в случае с пагинацией я не согласен, ибо реализовать пагинацию очень просто. В этой статье я постараюсь привести пример разработки такой пагинации, которая будет удовлетворять вас, в 99% случаев.
Код нашей пагинации состоит из двух основных частей и роутинга:
1. Код выборки — отвечает за выборку записей из БД в соответствии со страницей для которой осуществляется выборка,
2. Код представления — отвечает за представление ссылок на страницы,
3. … и роутинг =)
Read the rest of this entry »
августа 3, 2011 | Published in Ruby on Rails, Ruby on Rails 3
В этой совсем простой статья я расскажу о том как легко и просто можно форматировать дату и время в ваших приложениях на основе Ruby on Rails без использования стороннего кода.
Начну с того, что в Ruby on Rails, а точнее в ActiveSupport в расширениях для Ruby присутствует расширения для класса Date. Полный путь, если что выглядит так: . Это расширение базового Date содержит в себе константу DATE_FORMATS которая позволяет сохранять форматы даты и времени и давать им имена (DATE_FORMATS является хэшем). Благодаря этому вы можете один единственный раз определив необходимый вам формат повсеместно использовать его в вашем приложении.
Read the rest of this entry »
июля 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 »
июня 30, 2011 | Published in Ruby on Rails, Ruby on Rails 3, Базы данных
ActiveRecord — просто замечательный инструмент для простых запросов. Тем не менее иногда во имя производительности приходится отказаться от всех преимуществ предоставляемых ActiveRecord и снизойти до использования SQL.
Рассмотрим пример. У вас имеются пользователи и проекты. Пользователи могут принадлежать многим проектам через объединенную таблицу memberships. Какой наш виигрыш? Все пользователи, которые не связаны с проектами. Схема таблицы:
create_table :users, :force => true do |t|
end
create_table :memberships, :force => true do |t|
t.integer :user_id
t.integer :project_id
end
create_table :project, :force => true do |t|
end
Read the rest of this entry »
июня 10, 2011 | Published in Ruby on Rails, Ruby on Rails 3
До этого момента, наше приложение представляло собой хаос. В данной главе RubyDev Rails 3 Tutorial мы займемся тем, что придадим нашему приложению монолитный вид. Большая часть работы будет происходить в файлах представлений. Что конкретно в планах на выполнение:
1. Сделать так, чтобы наш проект имел вид более-менее похожий на настоящий блог.
2. Присоединить вывод комментариев к представлению поста.
3. Реализовать вложенные комментарии.
Хочу сказать,что эта глава будет самая насыщенная и сложная по сравнению с уже опубликованными главами, поэтому наберитесь терпения и по ходу чтения где-то записывайте все, что вам не понятно, чтобы после прочтения задать вопросы в комментариях. Не бойтесь показаться чайником, все мы в чем-то чайники и только задавая вопросы человек может стать профессионалом.
Read the rest of this entry »