Ruby on Rails

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: , , ,

Общие (полиморфные) адреса в Rails используя полиморфизм и вложенные атрибуты

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

Ruby on Rails 3Представьте, что вы разрабатываете приложение электронного магазина и у вас имеются две модели пользователей: клиенты и сотрудники. Для обеих моделей в базе необходимо хранить адреса и вы не имея опыта в раработке должно быть поместите информацию об адресах в таблицы с клиентами и сотрудниками, что, в дальнейшем может оказаться не правильным решением. Следующим шагом в вашей эволюции как разработчика будет создание отдельных таблиц для адресов клиентов и адресов сотрудников, так как адреса есть отдельными сущностями, которые должны представляться отдельной моделью и храниться в отдельной таблице. Однако в чем различие между адресами или контактными данными клиента и сотрудника? Если разницы нет, то здесь начинается следующая ступень вашей эволюции как веб разработчика — вы помещаете адреса клиентов и сотрудников в одну таблицу. Такая архитектура позволяет выDRYить ваш код от повторения и не запутываться в десятках ненужных таблиц. В данном случае адрес является отдельной сущностью, моделью, которую мы используем в других моделях — моделях клиентов и сотрудников и можем использовать еще в множестве других моделей, которым необходимы адреса. Как же нам передавать объект в различные модели? — На самом деле все достаточно просто и нам поможет в этом полиморфизм!
Read the rest of this entry »

Tags:

Кратко о принципе DRY в Ruby on Rails

января 2, 2011  |  Published in Ruby on Rails

C Новым Годом ув. читатели блога RubyDev.ru!

happy new year

Это краткая заметка для самых-самых новичков в программировании на Ruby и Ruby on Rails, которые еще не знакомы с таким принципом разработки как DRY.

Аббревиатура DRY расшифровывается как Don’t Repeat Yourself, что на более благозвучный русский переводится как: Не повторяйся! Согласно этому принципы программист должен оптимизировать свой код таким образом, чтобы код выполняющий какую-либо функциональность существовал в одном экземпляре. На практике это означает что общий код для нескольких моделей, представлений или контроллеров должен выносится с отдельный файл, модуль, класс, метод и т.д. Это дает нам следующие преимущества:

1. Меньше кода = больше читабельность
2. Меньше кода = меньше работы по его написанию и отладке.

Read the rest of this entry »

Tags:

Как сделать вложенные комментарии в Ruby on Rails? Часть первая: Модели.

декабря 26, 2010  |  Published in Ruby on Rails, Ruby on Rails 3

ruby on rails polymorphic associationsНа YouTube вы могли заметить замечательную систему комментирования, где вы можете комментировать не только видео, но и отвечать на комментарии других людей, что по-сути является комментированием других комментариев.

Если вам нравится такая система комментирования, и вы хотите добавить что-то похожее в свое приложение, то вы могли бы создать две таблицы, например: PostComment и CommentComment или что-то подобное. Однако лучшим вариантом будет использование полиморфных ассоциаций. Полиморфизм позволяет комментариям принадлежать как посту, так и другим комментариям и еще чему угодно. «Полиморфные ассоциации» вероятно испугали вас, однако использовать их проще, чем вы могли предположить.

Внимание! В статье описывается то, как это делается в Ruby on Rails 3. Исходные коды вы можете скачать на . Read the rest of this entry »

Tags: ,

Memoize техники в Ruby и Ruby on Rails

декабря 24, 2010  |  Published in Ruby, Ruby on Rails, Основы

ruby brainЗаголовок не опечатка. Если вы не слышали о «memoizе», то я вам кратко расскажу. Memoiz’инг — это кэширование результата метода таким образом что когда вы вызываете метод в будущем, то он не выполняет заново все операции. Я покажу вам несколько различных техник для подобного кэширования, с комментариями за и против использования каждой техники.
Read the rest of this entry »

Tags:

Маршрутизация внутри приложений на Ruby on Rails 3

ноября 22, 2010  |  Published in Ruby on Rails, Ruby on Rails 3

ruby on rails routingДанная статья написана в продолжение серии статей посвященным переходу на Ruby on Rails 3. Для тех же людей, которые только знакомятся с фреймворком Ruby on Rails, эта серия статей также может послужить не плохим руководством.

Другие статьи из этой серии:
Active Record запросы в Ruby on Rails 3

В Ruby on Rails 3 изменения коснулись не только ActiveRecord, но и маршрутизации. Для начала давайте определимся с терминологией: Маршрутизация или роутинг – это набор правил, которые определяют, к какому ресурсу получит доступ пользователь, перейдя по определенному адресу URL. Роут — одно правило маршрутизации (роутинга).

Read the rest of this entry »

Tags:

Active Record запросы в Ruby on Rails 3

сентября 9, 2010  |  Published in Ruby on Rails, Ruby on Rails 3

Ruby on Rails 3В Ruby on Rails 3 используется новый движок запросов к базе данных – , который вынесен в отдельный gem. Благодаря новому движку Active Record 3.0.0 стал более удобным и простым.
Давайте сравним то, какими были запросы в Ruby on Rails 2.3.x и какими стали в Ruby on Rails 3.

В нашем примере, приложение Rails будет содержать всего две модели: Article и Comment, которые имеют между собой взаимосвязь:

Article has_many :comments

В первом примере мы выбираем из базы данных десять последних записей в таблице Articles:

Article.find(:all, :order  =>  “publish_at desc”, :limit => 10)

Теперь давайте посмотрим, как выглядит запрос, выполняющий абсолютно ту же выборку в Ruby on Rails 3:

Article.order(“published_at desc”).limit(10)

Read the rest of this entry »

Tags:

Ruby on Rails 2.3.9 — последняя ступень на пути к Rails 3.0

сентября 6, 2010  |  Published in Ruby on Rails, Новости

4 сентября, не задолго после релиза Ruby on Rails 3, вышла последняя версия из ветки 2.3.х — 2.3.9, о чем было сообщено в официальном блоге Ruby on Rails:

«Мы выпустили новый релиз Ruby on Rails 2.3.9, который приближает вас на несколько шагов ближе к Ruby on Rails 3 и Ruby 1.9. Если ваше приложение работает на  Ruby on Rails 2.3.9, без каких либо ошибок и предупреждений о том, что вы используете устаревшие методы, то вы хорошо подготовлены к переходу на Ruby on Rails 3.

Что следует поправить:

Изменен в i18n синтаксис интерполяции, вместо старого Hello {{name}} , следует использовать родную для Ruby 1.9 конструкцию: Hello %{name}.

Произошла замена Object#tap на Kernel#returning, который родной для Ruby 1.8.7.

Переименован метод Array#random_element на Array#sample, который родной для Ruby 1.9.

Переименованы config.load_paths и .load_once_paths на более точно описывающие суть: config.autoload_paths и .autoload_once_paths.

Теперь у вас есть перечень изменений, для переноса вашего приложения на Ruby on Rails 2.3.9. Читайте , что бы узнать больше об истории изменений.


Вперед к Ruby on Rails 3.1!
»

Кстати! Поздравляю всех Рельсовиков с выходом  29 августа релиза Ruby on Rails 3, которого все с нетерпением ждали!

Tags:

Ruby Version Manager: приручаем gemset или Установка нескольких версий Rails

июля 12, 2010  |  Published in Ruby, Ruby Gems, Ruby on Rails

Как и обещал, еще одна статья об RVM.

rvm's gemset is gold!Одной из самых мощных и полезных вещей в RVM являются наборы gem’ов — gemsets. Gemset представляет собой отдельную директорию для gem’ов, таким образом, что не возникает конфликта между одноименными gem’ами в разных gemset’ах. Gemset’ы, или наборы gem’ов, предоставляют на удивление полезную возможность использовать сразу несколько версий одного и того же расширения Ruby, например использовать несколько версий Rails. Так же с их помощью вы можете проверить как хорошо работает ваше приложение при различных конфигурациях gem’ов.

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

Tags: , , , ,

Устанавливаем Ruby 1.8.7 и Ruby on Rails

июня 26, 2010  |  Published in Ruby, Ruby Gems, Ruby on Rails, Основы

railsЯ решил описать установку Ruby, RubyGems и Ruby on Rails отдельной статьей. Знаю, немножко запоздало, ведь блог ориентирован главным образом на новичков и следовало бы начать со статьи описывающей инсталляцию, но…

Установка Ruby

Прежде, чем вы сможете создать свое первое приложение на Rails, вам необходимо установить на свой компьютер Ruby, RubyGems и собственно Rails.
Read the rest of this entry »

Tags: , ,