Хэл Фултон - Программирование на языке Ruby

Тут можно читать онлайн Хэл Фултон - Программирование на языке Ruby - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ДМК Пресс, год 2007. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на языке Ruby
  • Автор:
  • Жанр:
  • Издательство:
    ДМК Пресс
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    5-94074-357-9
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Хэл Фултон - Программирование на языке Ruby краткое содержание

Программирование на языке Ruby - описание и краткое содержание, автор Хэл Фултон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов.

Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии.

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

Программирование на языке Ruby - читать онлайн бесплатно ознакомительный отрывок

Программирование на языке Ruby - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Хэл Фултон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Для работы с таблицами нужно уметь выполнять запросы. Для этого служат методы PGconn#execи PGconn#query.

Метод execпосылает переданную ему строку — SQL-запрос — серверу PostgreSQL и получает ответ в виде объекта PGresult, если выполнение завершилось успешно. В противном случае он возбуждает исключение PGError.

Метод queryтакже посылает свой строковый параметр в виде SQL-запроса. Но в случае успеха получает массив кортежей. В случае ошибки возвращается nil, а подробности можно получить, вызвав метод error.

Имеется специальный метод insert_tableдля вставки записи в указанную таблицу. Вопреки названию он не создает новую таблицу, а добавляет данные в существующую. Этот метод возвращает объект PGconn.

conn.insert_table("rtest",[[34]])

res = conn.query("select * from rtest")

res равно [["99"], ["34"]]

В этом примере в таблицу rtestвставляется одна строка. Для простоты мы указали только одну колонку. Отметим, что объект resкласса PGresultпосле обновления возвращает массив из двух кортежей. Чуть ниже мы рассмотрим методы, определенные в классе PGresult.

В классе PGconnопределены также следующие полезные методы:

dbвозвращает имя базы, с которой установлено соединение;

hostвозвращает имя сервера, с которым установлено соединение;

userвозвращает имя аутентифицированного пользователя;

errorвозвращает сообщение об ошибке;

finish, closeзакрывают соединение;

loimport(file)импортирует файл в большой двоичный объект (BLOB), в случае успеха возвращает объект PGlarge, иначе возбуждает исключение PGError;

loexport(oid, file)выгружает BLOB с идентификатор oidв указанный файл;

locreate([mode])возвращает объект PGlargeв случае успеха, иначе возбуждает исключение PGError;

loopen(oid, [mode])открывает BLOB с идентификатором oid. Возвращает объект PGlargeв случае успеха. Аргумент modeзадает режим работы с открытым объектом: "INV_READ"или "INV_WRITE"(если этот аргумент опущен, по умолчанию предполагается "INV_READ");

lounlink(oid)удаляет BLOB с идентификатором oid.

Отметим, что пять последних методов ( loimport, loexport, locreate, loopenи lounlink) работают с объектами класса PGlarge. У этого класса есть собственные методы для доступа к объекту и его изменения. (BLOB'ы создаются в результате выполнения методов loimport, locreate, loopenэкземпляра.)

Ниже перечислены методы, определенные в классе PGlarge:

open([mode])открывает BLOB. Аргумент modeзадает режим работы с объектом, как и в случае с методом PGconn#loopen);

closeзакрывает BLOB (BLOB'ы также закрываются автоматически, когда их обнаруживает сборщик мусора);

read([length])пытается прочитать lengthбайтов из BLOB'a. Если параметр lengthне задан, читаются все данные;

write(str)записывает строку в BLOB и возвращает число записанных байтов;

tellвозвращает текущую позицию указателя;

seek(offset, whence)перемещает указатель в позицию offset. Параметр whenceможет принимать значения SEEK_SET, SEEK_CURи SEEK_END(равные соответственно 0,1,2);

unlinkудаляет BLOB;

oidвозвращает идентификатор BLOB'a;

sizeвозвращает размер BLOB'a;

export(file)сохраняет BLOB в файле с указанным именем.

Более интересны методы экземпляра, определенные в классе PGresult(перечислены ниже). Объект такого класса возвращается в результате успешного выполнения запроса. (Для экономии памяти вызывайте метод PGresult#clearпо завершении работы с таким объектом.)

resultвозвращает массив кортежей, описывающих результат запроса;

each— итератор;

[]— метод доступа;

fieldsвозвращает массив описаний полей результата запроса;

num_tuplesвозвращает число кортежей в результате запроса;

fieldnum(name)возвращает индекс поля с указанным именем;

type(index)возвращает целое число, соответствующее типу поля;

size(index)возвращает размер поля в байтах. 1 означает, что поле имеет переменную длину;

getvalue(tup_num, field_num)возвращает значение поля с указанным порядковым номером; tup_num— номер строки;

getlength(tup_num, field_num)возвращает длину поля в байтах;

cmdstatusвозвращает строку состояния для последнего запроса;

clearочищает объект PGresult.

10.4.4. Интерфейс с LDAP

Для Ruby есть по меньшей мере три разных библиотеки, позволяющих работать с протоколом LDAP. Ruby/LDAP, написанная Такааки Татеиси (Takaaki Tateishi), — это довольно «тонкая» обертка. Если вы хорошо знакомы с LDAP, то ее может оказаться достаточно; в противном случае вы, наверное, сочтете ее слишком сложной. Пример:

conn = LDAP::Conn.new("rsads02.foo.com")

conn.bind("CN=username,CN=Users,DC=foo,DC=com", "password") do |bound|

bound.search("DC=foo,DC=com", LDAP::LDAP_SCOPE_SUBTREE,

"(&(name=*) (objectCategory=person))", ['name','ipPhone'])

do |user|

puts "#{user['name']} #{user['ipPhone']}"

end

end

Библиотека ActiveLDAPорганизована по образцу ActiveRecord. Вот пример ее использования, взятый с домашней страницы:

require 'activeldap'

require 'examples/objects/user'

require 'password'

# Установить соединение Ruby/ActiveLDAP и т. д.

ActiveLDAP::Base.connect(:password_block

=> Proc.new { Password.get('Password: ') },

:allow_anonymous => false)

# Загрузить запись с данными о пользователе

# (ее класс определен в примерах).

wad = User.new('wad')

# Напечатать общее имя.

р wad.cn

# Изменить общее имя.

wad.cn = "Will"

# Сохранить в LDAP.

wad.write

Есть также сравнительно недавняя библиотека, написанная Фрэнсисом Чианфрокка (Francis Cianfrocca), многие предпочитают именно ее:

require 'net/ldap'

ldap = Net::LDAP.new :host => server_ip_address,

:port => 389,

:auth => {

:method => :simple,

:username => "cn=manager,dc=example,dc=com",

:password => "opensesame"

}

filter = Net::LDAP::Filter.eq( "cn", "George*" )

treebase = "dc=example,dc=com"

ldap.search( :base => treebase, :filter => filter ) do |entry|

puts "DN: #{entry.dn}"

entry.each do |attribute, values|

puts " #{attribute}:"

values.each do |value|

puts " --->#{value}"

end

end

end

p ldap.get_operation_result

Какая из этих библиотек лучше — дело вкуса. Я рекомендую познакомиться со всеми и сформировать собственное мнение.

10.4.5. Интерфейс с Oracle

Oracle — одна из наиболее мощных и популярных СУБД в мире. Понятно, что было много попыток реализовать интерфейс с этой базой данных из Ruby. На сегодняшний день лучшей считается библиотека OCI8, которую написал Кубо Такехиро (Kubo Takehiro).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Хэл Фултон читать все книги автора по порядку

Хэл Фултон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование на языке Ruby отзывы


Отзывы читателей о книге Программирование на языке Ruby, автор: Хэл Фултон. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x