февраля 19, 2011 | Published in Ruby on Rails, 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 »
февраля 15, 2011 | Published in Ruby on Rails, Ruby on Rails 3
Представьте, что вы разрабатываете приложение электронного магазина и у вас имеются две модели пользователей: клиенты и сотрудники. Для обеих моделей в базе необходимо хранить адреса и вы не имея опыта в раработке должно быть поместите информацию об адресах в таблицы с клиентами и сотрудниками, что, в дальнейшем может оказаться не правильным решением. Следующим шагом в вашей эволюции как разработчика будет создание отдельных таблиц для адресов клиентов и адресов сотрудников, так как адреса есть отдельными сущностями, которые должны представляться отдельной моделью и храниться в отдельной таблице. Однако в чем различие между адресами или контактными данными клиента и сотрудника? Если разницы нет, то здесь начинается следующая ступень вашей эволюции как веб разработчика — вы помещаете адреса клиентов и сотрудников в одну таблицу. Такая архитектура позволяет выDRYить ваш код от повторения и не запутываться в десятках ненужных таблиц. В данном случае адрес является отдельной сущностью, моделью, которую мы используем в других моделях — моделях клиентов и сотрудников и можем использовать еще в множестве других моделей, которым необходимы адреса. Как же нам передавать объект в различные модели? — На самом деле все достаточно просто и нам поможет в этом полиморфизм!
Read the rest of this entry »
января 2, 2011 | Published in Ruby on Rails
C Новым Годом ув. читатели блога RubyDev.ru!
Это краткая заметка для самых-самых новичков в программировании на Ruby и Ruby on Rails, которые еще не знакомы с таким принципом разработки как DRY.
Аббревиатура DRY расшифровывается как Don’t Repeat Yourself, что на более благозвучный русский переводится как: Не повторяйся! Согласно этому принципы программист должен оптимизировать свой код таким образом, чтобы код выполняющий какую-либо функциональность существовал в одном экземпляре. На практике это означает что общий код для нескольких моделей, представлений или контроллеров должен выносится с отдельный файл, модуль, класс, метод и т.д. Это дает нам следующие преимущества:
1. Меньше кода = больше читабельность
2. Меньше кода = меньше работы по его написанию и отладке.
Read the rest of this entry »
декабря 26, 2010 | Published in Ruby on Rails, Ruby on Rails 3
На YouTube вы могли заметить замечательную систему комментирования, где вы можете комментировать не только видео, но и отвечать на комментарии других людей, что по-сути является комментированием других комментариев.
Если вам нравится такая система комментирования, и вы хотите добавить что-то похожее в свое приложение, то вы могли бы создать две таблицы, например: PostComment и CommentComment или что-то подобное. Однако лучшим вариантом будет использование полиморфных ассоциаций. Полиморфизм позволяет комментариям принадлежать как посту, так и другим комментариям и еще чему угодно. «Полиморфные ассоциации» вероятно испугали вас, однако использовать их проще, чем вы могли предположить.
Внимание! В статье описывается то, как это делается в Ruby on Rails 3. Исходные коды вы можете скачать на . Read the rest of this entry »
декабря 24, 2010 | Published in Ruby, Ruby on Rails, Основы
Заголовок не опечатка. Если вы не слышали о «memoizе», то я вам кратко расскажу. Memoiz’инг — это кэширование результата метода таким образом что когда вы вызываете метод в будущем, то он не выполняет заново все операции. Я покажу вам несколько различных техник для подобного кэширования, с комментариями за и против использования каждой техники.
Read the rest of this entry »
ноября 22, 2010 | Published in Ruby on Rails, Ruby on Rails 3
Данная статья написана в продолжение серии статей посвященным переходу на 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 »
сентября 9, 2010 | Published in Ruby on Rails, 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 »
сентября 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, которого все с нетерпением ждали!
июля 12, 2010 | Published in Ruby, Ruby Gems, Ruby on Rails
Как и обещал, еще одна статья об RVM.
Одной из самых мощных и полезных вещей в RVM являются наборы gem’ов — gemsets. Gemset представляет собой отдельную директорию для gem’ов, таким образом, что не возникает конфликта между одноименными gem’ами в разных gemset’ах. Gemset’ы, или наборы gem’ов, предоставляют на удивление полезную возможность использовать сразу несколько версий одного и того же расширения Ruby, например использовать несколько версий Rails. Так же с их помощью вы можете проверить как хорошо работает ваше приложение при различных конфигурациях gem’ов.
В предыдущей статье мы уже обсуждали установку и использование RVM, таким образом, вы наверняка уже установили несколько версий Ruby. В этой статье мы поговорим о том, как установить несколько версий Rails и как их использовать под различными реализациями и версиями Ruby. Read the rest of this entry »
июня 26, 2010 | Published in Ruby, Ruby Gems, Ruby on Rails, Основы
Я решил описать установку Ruby, RubyGems и Ruby on Rails отдельной статьей. Знаю, немножко запоздало, ведь блог ориентирован главным образом на новичков и следовало бы начать со статьи описывающей инсталляцию, но…
Установка Ruby
Прежде, чем вы сможете создать свое первое приложение на Rails, вам необходимо установить на свой компьютер Ruby, RubyGems и собственно Rails.
Read the rest of this entry »