<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sparkle&#039;s Workshop &#187; Ruby</title>
	<atom:link href="http://weavesky.com/tag/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://weavesky.com</link>
	<description></description>
	<lastBuildDate>Tue, 24 Apr 2012 03:32:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>一份未使用的rails ppt</title>
		<link>http://weavesky.com/2008/06/23/rails-ppt/</link>
		<comments>http://weavesky.com/2008/06/23/rails-ppt/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 12:58:09 +0000</pubDate>
		<dc:creator>Sparkle</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ppt]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://weavesky.com/?p=546</guid>
		<description><![CDATA[去年受朋友所托,准备了一份在广州BEA user group演讲的rails ppt 可惜后来user group搁浅&#8230; 点击下面的链接下载 [download id="1"] ppt是去年11月准备的,并未完全完成]]></description>
			<content:encoded><![CDATA[<p>去年受朋友所托,准备了一份在广州BEA user group演讲的rails ppt<br />
可惜后来user group搁浅&#8230;</p>
<p>点击下面的链接下载<br />
[download id="1"]</p>
<p>ppt是去年11月准备的,并未完全完成</p>
]]></content:encoded>
			<wfw:commentRss>http://weavesky.com/2008/06/23/rails-ppt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby/Rails RSS</title>
		<link>http://weavesky.com/2007/03/10/ruby-rails-rss/</link>
		<comments>http://weavesky.com/2007/03/10/ruby-rails-rss/#comments</comments>
		<pubDate>Sat, 10 Mar 2007 11:30:51 +0000</pubDate>
		<dc:creator>Sparkle</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://69.197.153.196/?p=299</guid>
		<description><![CDATA[用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。 废话少来，直接上代码吧： def feed articles = Article.find :all, :order =&#62; 'post_date DESC', :limit =&#62; 10 feed = RSS::Maker.make&#40;&#34;2.0&#34;&#41; do &#124;maker&#124; maker.channel.title = &#34;Gang of Technology&#34; maker.channel.description = &#34;Gang of Technology site&#34; maker.channel.link = &#34;http://up-u.com&#34; &#160; maker.items.do_sort = true &#160; articles.each do &#124;article&#124; item = maker.items.new_item item.link = &#34;http://up-u.com/archives/#{article.id}&#34; item.title = article.title item.date = <a href='http://weavesky.com/2007/03/10/ruby-rails-rss/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>用google搜索ruby制作rss的办法，搜了很久都找不到，这些年头，rss已经是很hot的字眼了，所以搜到了一堆提供rss的ruby网站，FT，我要找的是ruby怎么制作rss并且在rails中输出啊。后来终于知道怎么编写了，因此想把代码留下来造福大家，但是估计大家是不可能通过google搜索到这篇文章的了，看看有无有缘人能忽忽来到这里。</p>
<p>首先，我要说的是另一个解决方案，因为我想typo这个著名的blog程序里面应该会有rss输出的代码，于是下来看看。一看，typo果然聪明，因为rss本质是一个xml，所以typo就在controller里把需要的内容load出来，然后通过.rxml里面的xmlbuilder来自己一个一个写出来。呃⋯⋯这样太偏门了吧。</p>
<p>接着下来就是我要介绍的方法。如果你还在网上寻找ruby处理rss的lib的话，看到这篇文章你就不用再去找了，因为Ruby本身就内置了rss的解释和输出的支持，并且是同时支持0.9x/1.0/2.0。</p>
<p>废话少来，直接上代码吧：</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">    <span style="color:#9966CC; font-weight:bold;">def</span> feed
    articles = Article.<span style="color:#9900CC;">find</span> <span style="color:#ff3333; font-weight:bold;">:all</span>, <span style="color:#ff3333; font-weight:bold;">:order</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'post_date DESC'</span>, <span style="color:#ff3333; font-weight:bold;">:limit</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">10</span>
    feed = <span style="color:#6666ff; font-weight:bold;">RSS::Maker</span>.<span style="color:#9900CC;">make</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;2.0&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>maker<span style="color:#006600; font-weight:bold;">|</span>
      maker.<span style="color:#9900CC;">channel</span>.<span style="color:#9900CC;">title</span> = <span style="color:#996600;">&quot;Gang of Technology&quot;</span>
      maker.<span style="color:#9900CC;">channel</span>.<span style="color:#9900CC;">description</span> = <span style="color:#996600;">&quot;Gang of Technology site&quot;</span>
      maker.<span style="color:#9900CC;">channel</span>.<span style="color:#9900CC;">link</span> = <span style="color:#996600;">&quot;http://up-u.com&quot;</span>
&nbsp;
      maker.<span style="color:#9900CC;">items</span>.<span style="color:#9900CC;">do_sort</span> = <span style="color:#0000FF; font-weight:bold;">true</span>
&nbsp;
      articles.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>article<span style="color:#006600; font-weight:bold;">|</span>
        item = maker.<span style="color:#9900CC;">items</span>.<span style="color:#9900CC;">new_item</span>
        item.<span style="color:#9900CC;">link</span> = <span style="color:#996600;">&quot;http://up-u.com/archives/#{article.id}&quot;</span>
        item.<span style="color:#9900CC;">title</span> = article.<span style="color:#9900CC;">title</span>
        item.<span style="color:#9900CC;">date</span> = article.<span style="color:#9900CC;">post_date</span>
        item.<span style="color:#9900CC;">description</span> = Maruku.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>article.<span style="color:#9900CC;">content</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_html</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    send_data feed.<span style="color:#9900CC;">to_s</span>, <span style="color:#ff3333; font-weight:bold;">:type</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;application/rss+xml&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:disposition</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'inline'</span>
    <span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>这是本网站的rss输出的真实代码，如果你熟悉rails的话，你一定能看得懂。不过我还是来稍稍点评一下，跟rss没什么关系的我就不说了：</p>
<p>1. 首先是得require &#8216;rss/maker&#8217;一下。<br />
2. make(&#8220;2.0&#8243;)的2.0是你要输出的rss的版本，支持的值有0.9、1.0、2.0。至于为什么用2.0，因为2.0是0.9的新版本，而其实1.0是另一家的，这个你得好好去搜一下它们的历史。<br />
3. maker.channel的title、description、link是三个必填的值，但是其实按照rss规范，description不是必须的，但是这里不填的话，maker会报错。<br />
4. maker.items.do_sort = true的意思是按照item的时间排一下序，不过其实我select出来的时候已经排好序了，其实要不要没有关系。<br />
5. 接下来就是item的生成了，调用item = maker.items.new_item<br />
6. rss规范里面item有好多个值，不过我这里只选了四个，其实只有link和title是必须的，date最好也输出，不然rss reader会把所有文章都当成是today，description我把全文输出了，因为我就是喜欢用rss reader看全文的人。<br />
7. 跟着就是rails的内容了，怎么把它发送出去呢，send_data就行了，这里需要注意的是send_data其实是接受string，但实际上你不传string也行，但是有不会想java那样自动调用toString一把，所以我们得显式转，不然会报错，我觉得是rails的设计问题，另外就是得指定mine type，至于:disposition => &#8216;inline&#8217;，因为send_data的默认就是会强制浏览器下载，这个得改一下。<br />
8. Maruku是什么？这个跟本次主题没有关系啦，想知道就看[这里](http://rubylib.cn/maruku-27)吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://weavesky.com/2007/03/10/ruby-rails-rss/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

