Archive for февраля, 2012

Spork DRb, RSpec и Rails 3.2

февраля 17, 2012  |  Published in BDD, Development Processes, RSpec, Тестирование

Когда вы запускаете тесты для вашего приложения, то сами тесты выполняются достаточно быстро, а значительное время забирает запуск вашего приложения на Rails для тестирования. Каждый раз выполняя тесты все заново запускаете свое приложение.

Для решения этой проблемы было предложено решение, которое называется Spork. Spork является DRb сервисом (сервером), суть которого заключается в том, что он держит приложение постоянно загруженным, так что вам не нужно его запускать каждый раз вместе с запуском тестов.

В данной статье мы рассмотрим работу Spork совместно с RSpec для Rails 3.2. Мы будем использовать RSpec потому, что он имеет встроенную поддержку DRb сервисов и является одним из самых популярных решений для тестирования и написания спецификаций.
Read the rest of this entry »

Tags: , , ,

Круговое поручительство

февраля 16, 2012  |  Published in Development Processes

Мне на ум пришла такая идея (на оригинальность не претендую), что было бы хорошо организовывать «круговое поручительство» для разработчиков, которое заключается вот в чем:

  • Группа программистов занятая в одном проекте выполняет проверку труда друг-друга.
  • Круговое поручительство похоже на хоровод — тот, кто ведет тебя предоставляет тебе результаты своего труда для проверки, а ты сам предоставляешь свой код тому человеку, который идет за тобой.
  • «Поручитель» не только изучает чужой код, но и делает его рефакторинг и оптимизацию производительности, там где узкие места очевидны.
  • После полученных правок к своему коду каждый член команды должен изучить их и сделать соответствующие выводы.
  • Через определенный промежуток времени все «перетасовываются» заново, так, чтобы у каждого появился новый «поручитель».

круговое поручительство

Что это дает?

  • Улучшается качество кода за счет «мгновенного» рефакторинга.
  • Ускоряется обучение начинающих разработчиков за счет осознания и исправления своих ошибок и изучения правильных техник.
  • Разработчик разрабатывая определенную часть приложения не зацикливается на ней, а имеет возможность изучить все приложение целиком.

Недостатком является падение производительности в плане количество фич на человека за единицу времени.

Сейчас я хочу испытать эту идею в команде разработчиков Quasar CMS, а позже поделюсь впечатлениями и выводами. Будет интересно узнать мнение кого-то, кто уже работает с применением подобных техник и тех, кто попробует на практике то, что я здесь описал.

Tags: ,

Ruby on Rails 3: Основы работы с ActiveRecord моделью

февраля 10, 2012  |  Published in Ruby on Rails, Ruby on Rails 3, Базы данных

ruby on rails tutorialRubyDev — ваш друг в изучении Ruby и Rails!

Что такое модель?

Модель — это составляющая часть архитектурного паттерна MVC, которая хранит бизнес логику. В вашем приложении все модели должны храниться в директории app/models в отдельных файлах, имена которых должны соответствовать имени модели, например: Post -> post.rb, InvoiceProduct -> invoice_product.rb.

Как связаны модель и таблица?
В большинстве случаев модель ассоциируется с определенной таблицей в базе данных, например модель Post будет ассоциироваться с таблицей posts. Экземпляр модели являет собой объект представляющий одну запись из таблицы, а сама модель (класс) используется для работы со всей таблицей, например для поиска всех записей соответствующих некоторому условию.

Обратите внимание на то, как называется модель и как называется соответствующая ей таблица. Имя модели — всегда в едином числе, а имя таблицы во множественном.

Как создать модель?
Создать модель можно вручную, но лично я предпочитаю использовать генератор моделей:

$ rails g model Product name:string description:text price:integer
      invoke  active_record
      create    db/migrate/20120210115708_create_products.rb
      create    app/models/product.rb
      invoke    test_unit
      create      test/unit/product_test.rb
      create      test/fixtures/products.yml

Вызывая генератор я передаю в него в качестве аргументов имя модели и имена полей таблицы ассоциируемой с моделью вместе с типами данных этих полей (столбцов).

Генератор модели мне кажется более удобным потому, что одной командой я создаю сразу все необходимые для работы файлы: собственно модель, миграцию для создания соответствующей модели таблицы в БД, файл фикстур и болванку для написания тестов.
Read the rest of this entry »

Tags: , , , , , , ,

Ruby on Rails 3: Миграции в Rails 3.x

февраля 9, 2012  |  Published in Ruby on Rails, Ruby on Rails 3

ruby on rails tutorialRubyDev — ваш друг в изучении Ruby и Rails!

Миграции — это очень удобный инструмент для управления структурой базы данных без использования SQL.

Как работают миграции?

Миграции — это обыкновенные классы, которые наследуются от ActiveRecord::Migration, описывают структуру базы данных и хранятся в директории db/migrate/ вашего проекта.  При использовании генератора scaffold или генератора моделей автоматически будет создан и класс миграции для создания соответствующей модели таблицы.

$ rails g model Post title:string content:text

В результате помимо создания самой модели будет создан еще и файл миграции следующего содержимого:

#db/migrate/20120126202608_create_posts.rb
class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text   :content

      t.timestamps
    end
  end
end

В предыдущих версиях Rails использовались методы self.up и self.down для соответственно выполнения и отката миграции. В Rails 3.1, как показано выше используется один единственный метод change вместо self.up и self.down. Методы up и down также доступны, но в большинстве случаев достаточно метода change.

Для выполнения миграций необходимо выполнить команду:

$ rake db:migrate

Запуск этой команды выполнит все имеющиеся миграции, что ранее не были выполнены. Read the rest of this entry »

Tags: , , , , ,

Ruby on Rails 3: Введение в ActiveRecord

февраля 9, 2012  |  Published in Ruby on Rails, Ruby on Rails 3

ruby on rails tutorialRubyDev — ваш друг в изучении Ruby и Rails!

В этой главе вы узнаете более подробно о том, что такое модель, чем занимается ActiveRecord входящий в состав Ruby on Rails, что такое ORM и что такое миграции.

Что такое модель?

Из предыдуших глав или из своего опыта разаботки на других языках программирования и платформах вы уже должно быть знаете, что такое модель, но я вынужден повториться:

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

В Ruby on Rails модельная прослойка реализована в виде модуля ActiveRecord. ActiveRecord предоставляет паттерн ORM для работы с записями в базе данных и не только ORM.

Что такое ORM?

ORM (Object Relation Mapping) — паттерн проектирования, который сводится к достаточно простой вещи — представлению записей в виде объектов.

Что такое ActiveRecord?

ActiveRecord — это фреймворк для работы с реляционными базами данных (MySQL, PostgreSQL, SQLite и т.д.). ActiveRecord реализует в себе не только паттерн ORM, но и миграции, валидацию, обратные вызовы (коллбеки), паттерн «Наблюдатель», ассоциации между записями и много-много чего еще.

В приложении на Ruby on Rails модели хранятся в директории app/models вашего приложения в файлах, что носят имена соответствующие именам классов-моделей: Post -> app/models/post.rb.

Модель в случае использования ActiveRecord представляет собой класс наследуемый от класса — интерфейса ActiveRecord::Base, например:

class Post < ActiveRecord::Base
end

Приведенный выше пример модели наследуясь от класса ActiveRecord::Base наследует от него всю мощь ActiveRecord, по этому приведенные выше две строки кода уже умеют делать очень многое!

Что такое миграции?

Миграции — это файлы в которых описывается структура базы данных. Каждый раз, когда вы используете генератор для создания ActiveRecord модели — вы создаете и соответствующий ей файл миграции. Вы можете создавать миграции отдельно от моделей, например, когда вам необходимо добавить или удалить поля в уже существующей таблице.

Миграции очень удобны для создания и редактирования и управления структурой базы данных. Миграции позволяют абстрагироваться от базы данных и использовать код написанный на изящном Ruby для определения схемы базы данных. Кроме того миграции упрощают разворачивание вашего проекта на сервере и позволяют всего одной командой создать все необходимые для работы приложения таблицы в базе данных.

 

Лучшая благодарность автору — ваши комментарии и популяризация ресурса! Спасибо всем за внимание к проекту и моральную поддержку его автора. Не забывайте о нашей группе во Вконтакте: !

Tags: , , , , ,

Ruby on Rails 3: Знакомьтесь, Rails

февраля 9, 2012  |  Published in Ruby on Rails, Ruby on Rails 3

ruby on rails tutorialRubyDev — ваш друг в изучении Ruby и Rails!

Эта статья представляет собой краткое введение в веб-фреймворк Ruby on Rails. Она расскажет вам о том, что такое веб-фреймворки, какие выгоды от использования они дают разработчику и как Rails выделяется среди остальных веб-фреймворков. Кроме того в этой статье мы рассмотрим устройство приложения разрабатываемого на Ruby on Rails, архитектурный паттерн  MVC, принципы CoC и DRY.

Что такое веб-фреймворк?

Программный фреймворк — это каркас приложения, который избавляет разработчика от рутинной работы и навязывает ему некоторые правила хорошего тона, архитектуру приложения и т.д. Другими словами фреймворк позволяет программисту писать меньше кода за счет использования кода написанного разработчиками фреймворка, которые зачастую более опытны.

Веб-фреймворк — соответственно фреймворк ориентированный на разработку веб-приложений.
Read the rest of this entry »

Tags: , , , ,