通过BAIDU的快照看到这个文章的,原文章地址已经打不开了,只好转来,给更多的提供便利,应该是Sparkle写的,感谢一下~
用google搜索ruby制作rss的办法,搜了很久都找不到,这些年头,rss已经是很hot的字眼了,所以搜到了一堆提供rss的ruby网站,FT,我要找的是ruby怎么制作rss并且在rails中输出啊。后来终于知道怎么编写了,因此想把代码留下来造福大家,但是估计大家是不可能通过google搜索到这篇文章的了,看看有无有缘人能忽忽来到这里。
首先,我要说的是另一个解决方案,因为我想typo这个著名的blog程序里面应该会有rss输出的代码,于是下来看看。一看,typo果然聪明,因为rss本质是一个xml,所以typo就在controller里把需要的内容load出来,然后通过.rxml里面的xmlbuilder来自己一个一个写出来。呃??这样太偏门了吧。
接着下来就是我要介绍的方法。如果你还在网上寻找ruby处理rss的lib的话,看到这篇文章你就不用再去找了,因为Ruby本身就内置了rss的解释和输出的支持,并且是同时支持0.9x/1.0/2.0。
废话少来,直接上代码吧:
ruby 代码
ruby 代码
- def feed
-
- articles = Article.find :all, :order => 'post_date DESC', :limit => 10
- feed = RSS::Maker.make("2.0") do |maker|
- maker.channel.title = "Gang of Technology"
- maker.channel.description = "Gang of Technology site"
- maker.channel.link = "http://up-u.com"
- maker.items.do_sort = true
- articles.each do |article|
- item = maker.items.new_item
- item.link = "http://up-u.com/archives/#{article.id}"
- item.title = article.title
- item.date = article.post_date
- item.description = Maruku.new(article.content).to_html
- end
- end
- send_data feed.to_s, :type => "application/rss+xml", :disposition => 'inline'
- end
这是本网站的rss输出的真实代码,如果你熟悉rails的话,你一定能看得懂。不过我还是来稍稍点评一下,跟rss没什么关系的我就不说了:
- 首先是得
require 'rss/maker'
一下。
make("2.0")
的2.0是你要输出的rss的版本,支持的值有0.9、1.0、2.0。至于为什么用2.0,因为2.0是0.9的新版本,而其实1.0是另一家的,这个你得好好去搜一下它们的历史。
maker.channel
的title、description、link是三个必填的值,但是其实按照rss规范,description不是必须的,但是这里不填的话,maker会报错。
maker.items.do_sort = true
的意思是按照item的时间排一下序,不过其实我select出来的时候已经排好序了,其实要不要没有关系。
- 接下来就是item的生成了,调用
item = maker.items.new_item
- rss规范里面item有好多个值,不过我这里只选了四个,其实只有link和title是必须的,date最好也输出,不然rss reader会把所有文章都当成是today,description我把全文输出了,因为我就是喜欢用rss reader看全文的人。
- 跟着就是rails的内容了,怎么把它发送出去呢,
send_data
就行了,这里需要注意的是senddata其实是接受string,但实际上你不传string也行,但是有不会想java那样自动调用toString一把,所以我们得显式转,不然会报错,我觉得是rails的设计问题,另外就是得指定mine type,至于:disposition => 'inline'
,因为senddata的默认就是会强制浏览器下载,这个得改一下。
另一种实现方法
ruby 代码
- xml.instruct! :xml, :version=>"1.0"
- xml.rss(:version=>"2.0"){
- xml.channel{
- xml.title("RSS")
- xml.link("http://")
- xml.description("description")
- xml.language("zh-cn")
- for opus in @opus
- xml.item do
- xml.title(opus.title)
- xml.description(opus.description)
-
- xml.pubDate(opus.created_at.strftime("%a, %d %b %Y %H:%M:%S %z"))
- xml.link("url")
- end
- end
- }
- }
分享到:
相关推荐
【标题】:“RSS代码解析与应用” 【描述】:“RSS(Really Simple Syndication)是一种用于发布和订阅信息的XML格式,它使得用户可以方便地获取网站的更新内容,如新闻、博客文章等。RSS代码是实现RSS订阅功能的...
【Rss插件-帝国CMS】是专门为帝国内容管理系统(Empire CMS)设计的一款扩展功能插件,旨在增强系统对RSS(Really Simple Syndication)的支持。RSS是一种互联网内容发布格式,它允许用户订阅网站更新,无需频繁访问...
《基于新浪RSS的Android RSS阅读器源码解析与学习指南》 RSS(Really Simple Syndication)是一种内容聚合格式,常用于新闻、博客等网站,让用户能够方便地获取和订阅更新内容。在移动设备上,RSS阅读器应用是访问...
【phpcms RSS全文输出修改详解】 在PHP CMS系统中,RSS(Really Simple Syndication)是一种标准,用于聚合网站内容,让订阅者通过RSS阅读器获取更新。然而,默认情况下,phpcms的RSS功能可能只提供文章的摘要,而...
RSS(Really Simple Syndication)是一种基于XML的网络内容聚合格式,它允许用户通过RSS阅读器或聚合器获取网站的更新信息,如新闻、博客文章等。在Java中实现RSS的发布和订阅,需要理解RSS的结构以及如何使用Java...
标题 "MFC编写的RSS简单阅读器" 涉及的知识点主要集中在使用Microsoft Foundation Class (MFC) 库来开发一个简单的RSS阅读器应用程序。MFC是微软为Windows平台提供的一个C++类库,它封装了Windows API,使得开发者...
标题中的“提交RSS工具英文站RSS提交,英文站RSS提交”和描述中的“提交RSS工具搜索引擎的RSS方式的提交提交RSS工具”都指向了一个主题,即利用RSS(Really Simple Syndication)工具向英文网站和搜索引擎提交RSS ...
C# RSS阅读器是一款基于C#编程语言开发的应用程序,专为用户管理和阅读RSS(Really Simple Syndication)订阅而设计。RSS是一种XML格式,用于发布新闻、博客和其他定期更新的内容,使得用户可以方便地获取并聚合来自...
【Rss全国各省市天气预报】项目是一个利用RSS(Really Simple Syndication)技术获取并解析全国各地天气信息的应用。RSS是一种基于XML的格式,用于发布和订阅新闻、博客、天气等实时信息,使得用户能轻松地获取和...
RSS(Really Simple Syndication)是一种基于XML的网络内容发布协议,它允许网站提供自己的新闻提要,以便用户可以通过RSS阅读器订阅和获取更新。在这个压缩包中,包含了一系列与Java实现RSS相关的库和源代码,这将...
【RSS模型】 RSS,全称Really Simple Syndication(真正简单的聚合),是一种用于发布和获取网站内容的标准化格式。它允许用户通过订阅RSS feed来跟踪更新,无需频繁地访问各个网站。RSS订阅使得新闻、博客文章和...
Ultimate Reader——Our Own Rss Reader 随着越来越多的Web站点对RSS的支持,RSS已经成为目前最成功的XML应用。RSS搭建了一个信息迅速传播的技术平台,使得每个人都成为潜在的信息提供和获取者。在知识爆炸的当今...
RSS(Really Simple Syndication)是一种基于XML的网络内容发布协议,它使得用户能够轻松地获取网站的更新信息,如新闻、博客文章等。RSS通过订阅(subscribe)和发布(publish)的方式,允许用户无需直接访问网站就...
标题中的"ad-rss-lib-1.1.0.tar.gz"是一个开源库的压缩包,版本号为1.1.0,格式为tar.gz。在IT行业中,这种格式通常是Linux或Unix系统中用来打包和压缩文件的常见方式。tar命令用于打包多个文件和目录到一个单一的...
RSS Announcer是一款专门针对国外市场设计的RSS推广工具,它为用户提供了一种高效的方式来分发和宣传他们的RSS(Really Simple Syndication) feed,以扩大在线影响力和吸引更多的读者。RSS是一种标准格式,允许用户...
新浪RSS阅读器是一款基于Android平台的应用程序,它允许用户订阅并阅读来自新浪的RSS新闻源。源码分析有助于开发者理解RSS订阅和解析的过程,以及如何在Android环境下构建一个功能完善的新闻阅读应用。以下是对该...
在IT行业中,RSS(Really Simple Syndication)是一种广泛使用的数据格式,它允许用户订阅并获取网站更新,无需频繁地手动检查。在这个场景中,我们关注的是如何利用RSS订阅B站(哔哩哔哩,bilibili)上的UP主(内容...
标题 "Node.js-使用RSS分类订阅稀土掘金" 指出我们将探讨如何利用Node.js技术来构建一个RSS订阅系统,特别关注于稀土掘金(Juejin)这个平台的特定分类内容。RSS(Really Simple Syndication)是一种内容发布协议,...
RSS(Received Signal Strength,接收到的信号强度)位置指纹法是其中一种常用且有效的定位策略。本压缩包文件提供了关于RSS指纹定位的实现,采用KNN(K-Nearest Neighbors,K近邻算法)作为核心算法,并使用MATLAB...