Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Каждая таблица описывается классом, производным от
ActiveRecord::Baserequire 'active_record'ActiveRecord::Base.establish_connection(:adapter => "oci8", :username => "username", :password => "password", :database => "mydb", :host => "myhost")class SomeTable < ActiveRecord::Base set_table_name "test_table" set_primary_key "some_id"endSomeTable.find(:all).each do |rec| # Обработать запись...enditem = SomeTable.newitem.id = 1001item.some_column = "test"item.saveБиблиотека предлагает богатый и сложный API. Я рекомендую ознакомиться со всеми руководствами, которые вы сможете найти в сети или в книгах. Поскольку эта библиотека составляет неотъемлемую часть системы «Ruby on Rails», то мы еще вернемся к ней в главе, посвященной этой теме.
OgActiveRecordOgПри работе с
OgОпределяя подлежащий хранению класс, мы пользуемся методом
propertyattr_accessorclass SomeClass property :alpha, String property :beta, String property :gamma, StringendПоддерживаются также типы данных
IntegerFloatTimeDateСоединение с базой данных устанавливается так же, как в случае
ActiveRecordDBIdb = Og::Database.new(:destroy => false, :name => 'mydb', :store => :mysql, :user => 'hal9000', :password => 'chandra')У каждого объекта есть метод
saveobj = SomeClass.newobj.alpha = "Poole"obj.beta = "Whitehead"obj.gamma = "Kaminski"obj.saveИмеются также методы для описания связей объекта в терминах классической теории баз данных:
class Dog has_one :house belongs_to :owner has_many :fleasendЭти, а также другие методы, например
many_to_manyrefers_toБиблиотека
Og10.5. Заключение
В данной главе был представлен обзор ввода/вывода в Ruby. Мы рассмотрели сам класс
IOFileDirPathnameIOТакже было уделено внимание вопросам хранения данных на более высоком уровне, точнее, на внешних носителях в виде сериализованных объектов. Наконец, мы дали краткий обзор решений, которые Ruby предлагает для интерфейса с настоящими базами данных, а кроме того, познакомились с некоторыми объектно-ориентированными подходами к взаимодействию с реляционными СУБД.
Ниже мы еще вернемся к вводу/выводу в контексте сокетов и сетевого программирования. Но предварительно рассмотрим некоторые другие темы.
Глава 11. ООП и динамические механизмы в Ruby
Как введение иррациональных чисел… стало удобным мифом упростившим законы арифметики… так физические объекты и постулированные сущности делают наше восприятие реальности более простым и завершенным… Концептуальная схема физических объектов напоминает удобный миф, который проще, чем истина, но при этом содержит тут и там частички истины.
Это необычная глава. В большинстве других глав рассматривается какой-то конкретный аспект, например строки или файлы, но в этой все иначе. Если расположить «пространство задачи» по одной оси системы координат, то данная глава окажется на другой оси, поскольку содержит по кусочку из всех других областей. Связано это с тем, что объектно-ориентированное программирование и динамичность сами по себе являются не задачами, а парадигмами, которые могут быть применены к решению любой задачи, будь то системное администрирование, низкоуровневое сетевое программирование или разработка приложений для Web.
Вот почему значительная часть материала данной главы должна быть уже знакома любому программисту, знающему Ruby. На самом деле все остальное в этой книге не имеет смысла без понимания изложенных здесь основ. Например, любой программист на Ruby знает, как создать подкласс. Возникает вопрос: что включить, а без чего можно обойтись? Знает ли любой программист о методе
extendinstance_eval
