RubyDev Ruby Tutorial #5 > Методы и процедуры в Ruby

апреля 13, 2011  |  Published in Ruby, Основы

Что есть метод и что есть процедура?
Метод — это определенное действие объекта.
Процедура — это просто действие не привязанное к объектам.

Методы свойственны только объектно-ориентированному программированию, а поцедуры функциональному.

Ruby является объектно-ориентированным языком программирования однако имеет в своем арсенале процедуры и лямбда-функции, которые являются объектами класса Proc.

Зачем необходимы процедуры
Без процедур в Ruby можно отлично обходиться, однако Ruby — язык широких возможностей и предоставляет вам множество способов реализовать один и тот же функционал.

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

Tags: ,

RubyDev Ruby Tutorial #4 > Структуры в Ruby: экземпляры Struct

апреля 3, 2011  |  Published in Ruby, Основы

В Ruby имеется специальный, предопределенный тип Struct, который позволяет создавать экземпляры Struct (структуры), являющиеся специфичными классами, объекты которых напоминают хэши, с тем лишь отличием, что количество ключей ограничено и имеются методы аксессоры для доступа к хранимым в них свойствам. Структура является специфичным классом, специфика которого заключена в том, что каждая структура наследуется от класса Struct. Примеры структур:

Класс:

сlass Student
  def initialize(name, last_name, course)
    @name = name
    @last_name = last_name
    @course = course
  end

  attr_accessor :name, :last_name, :course
end

… можно легко заменить следущим объектом типа Struct:

student = Struct.new('Student', :name, :last_name, :course)

Read the rest of this entry »

Tags: ,

RubyDev Ruby Tutorial #3 > Объектно-ориентированное Программирование (ООП) в Ruby

апреля 2, 2011  |  Published in Ruby, Основы

Ruby — объектно-ориентированный язык программирования, поэтому знание парадигмы объектно-ориентированного программирования (ООП) является обязательным.

Тема объектно-ориентированного программирования достаточно сложна, поскольку в ней переплетаются множество подтем, которые, разделить нельзя, поэтому данная глава будет иметь итерационной подход к изложению материала, то есть мы будем двигаться по спирали захватывая все больший и большый объем информации.
Read the rest of this entry »

Tags: ,

RubyDev Ruby Tutorial #2 > Базовые типы данных в Ruby

марта 28, 2011  |  Published in Ruby, Основы


Строки

Строки — это произвольной длины наборы символов, которые заключены в одинарные или двойные кавычки. Пример строк:

«this is a string»
‘this is a string in single quotes’

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

%q!this is a string in single quotes!
%q{this is a string in single quotes}

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

Tags: ,

RubyDev Ruby Tutorial #1 > Введение в Ruby

марта 23, 2011  |  Published in Ruby, Основы

Предупреждение: Я не являюь профессиональным программистом, я любитель постигающий эту науку и желающий систематизировать свои знания путем написания учебника. Я стараюсь сделать его максимально полным и подробным, более качественным, чем все, что уже имеются. Создавая данный учебник я руководствуюсь своими личными соображениями о том, как он должен быть устроен и что в него должно быть включено. Если вам не нравится структура или изложение материала — просто не читайте, практика показывает, что это очень эффективный способ избежать болей ниже спины. Буду благодарен доброжелательной критике конкретно содержания, так как я не все знаю и даже в том, что знаю, могу заблуждаться.

Эта глава вводная, философская, совсем не практичная, однако очень важная. Она даст вам базовое представление о языке Ruby.

Философско-исторический аспект
Практический аспект
Установка Ruby
Кратко об элементах программного кода
Некоторые особенности Ruby Read the rest of this entry »

Tags: ,

Ruby и крассивый код #5: Рекомендации по стилю

февраля 24, 2011  |  Published in Ruby, Основы

samurai
Сегодня немного налажал с кодом и решил написать статью так сказать для закрепления представлений о хорошем коде в голове, ну и разумеется для того, чтобы поделиться имеющимися бедными познаниями с другими новичками. Более-менее опытным разработчикам все это уже, наверняка, известно, поэтому, если вы себя таковым считаете — можете не читать.
Read the rest of this entry »

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

Ruby’новые методы define_method, method_missing и instance_eval

февраля 13, 2011  |  Published in Ruby, Основы

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

Ruby’новые методы define_method, method_missing и instance_eval

Одной из вещей, которые мне так нравятся в Ruby есть то, что Ruby очень похож на Lisp. Конечно, Ruby не имеет полноты макросов, но он облает набором абсолютно крутецких методов, которые позволяют сокращать ваш код и делать ваши программы более легкоподдерживаемыми. Три метода, которые я реально обожаю это: define_method, method_missing и instance_eval. В этой статье я хочу подробно рассказать о них.
Read the rest of this entry »

Tags: , ,

Кое-что о модуле ObjectSpace в Ruby

января 28, 2011  |  Published in Ruby, Основы

rubyRuby и ObjectSpace

В Ruby существует такой магический модуль как ObjectSpace. Он содержит весьма интересные, но редко применяемые методы, о которых и пойдет речь в этой статье.

Метод ObjectSpace.each_object

ObjectSpace.each_object это наверное самый полезный и самый используемый метод из всех методов, которые содержатся в ObjectSpace. Могущество этого метода заключается в том, что он позволяет в реальном времени редактировать объекты, причем это можно делать не с каким-либо определенным объектом, а со всем множеством экземпляров определенного класса.


class Blog

  attr_accessor :blog, :link, :author

  def initialize (blog, link, author)
    @blog   = blog
    @link   = link
    @author = author
  end

  def self.find_blog_by_author_name(aname)
    blog = false
    ObjectSpace.each_object(Blog) do |b|
      b.author == aname ? blog = b : blog
    end

    return blog
  end
end

rubydev = Blog.new('RubyDev', 'http://rubydev.ru', 'Vladimir Melnik')
rubyinside = Blog.new('RubyInside', 'http://rubyinside.com', 'Peter Cooper')
ykblog = Blog.new('Yehuda\'s blog', 'http://yehudakatz.com', 'Yehuda Katz' )

fblog  =  Blog.find_blog_by_author_name('Vladimir Melnik')

Теперь в переменной fblog у нас содержится та ссылка на тот же объект, что и в переменной rubydev. Read the rest of this entry »

Tags: , ,