Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
4 Assessment of NASA's Mars Architecture 2007-20165 NASA Mars Picture of the Day: Rush HourЕсть также возможность генерировать документы в формате RSS (листинг 15.5). Для этого нужно инвертировать показанную выше процедуру.
require 'rss'feed = RSS::Rss.new("2.0")chan = RSS::Rss::Channel.newchan.description = "Feed Your Head"chan.link = "http://nosuchplace.org/home/"img = RSS::Rss::Channel::Image.newimg.url = "http://nosuchplace.org/images/headshot.jpg"img.title = "Y.T."img.link = chan.linkchan.image = imgfeed.channel = chani1 = RSS::Rss::Channel::Item.newi1.title = "Once again, here we are"i1.link = "http://nosuchplace.org/articles/once_again/"i1.description = "Don't you feel more like you do now than usual?"i2 = RSS::Rss::Channel::Item.newi2.title = "So long, and thanks for all the fiche"i2.link = "http://nosuchplace.org/articles/so_long_and_thanks/"i2.description = "I really miss the days of microfilm..."i3 = RSS::Rss::Channel::Item.newi3.title = "One hand clapping"i3.link = "http://nosuchplace.org/articles/one_hand_clapping/"i3.description = "Yesterday I went to an amputee convention..."feed.channel.items << i1 << i2 << i3puts feedБольшая часть этой программы понятна без слов. Мы создаем канал в формате RSS 2.0 (с пустыми элементами
channelimageimagechannelНаконец, мы создаем последовательность статей и помещаем их в канал. Отметим, что необходимо добавлять статьи именно по отдельности. Возникает искушение пойти по более простому пути:
feed.channel. items = [i1,i2,i3]но такое решение работать не будет. Почему-то в классе
Channelitems=items[0] = i1У библиотеки
rssМногие предпочитают не RSS, a Atom. Библиотека
rssfeedtools15.2.2. Библиотека feedtools
Библиотека
feedtoolsnet/httpopen-uriВот простой пример, эквивалентный первому примеру из предыдущего раздела:
require 'feed_tools'URL = "http://www.marstoday.com/rss/mars.xml"feed = FeedTools::Feed.open(URL)puts "Description: #{feed.title}n"feed.entries.each_with_index {|x,i| puts "#{i+1} #{x.title}" }Этот вариант короче и яснее предыдущего. Некоторые вещи не так очевидны, например у объекта
feedchanneltitledescriptionfeedНиже показано, как читать новости из канала в формате Atom:
require 'feedtools'URL = "http://www.atomenabled.org/atom.xml"feed = FeedTools::Feed.open(URL)puts "Description: #{feed.title}n"feed.entries.each_with_index {|x,i| puts "#{i+1} #{x.title}" }Обратите внимание — изменился только сам URL! Это замечательно, поскольку мы можем обрабатывать каналы независимо от формата. Результат, естественно, похож на то, что мы видели раньше:
Description: AtomEnabled.org1 AtomEnabled's Atom Feed2 Introduction to Atom3 Moving from Atom 0.3 to 1.04 Atom 1.0 is Almost Final5 Socialtext Supports AtomХочу еще раз предостеречь вас: не тратьте впустую ресурсы сервера, принадлежащего поставщику канала. Реальное приложение должно кэшировать содержимое канала, а если вы занимаетесь просто тестированием, лучше создайте собственный канал. Библиотека
feedtools
