<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Ruby论坛最新讨论 - JavaEye</title>
    <description>Ruby编程、Ruby DSL、Ruby on rails - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>使用ROR开发的项目管理系统Redmine－中文版</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chaoqun2003.javaeye.com">chaoqun2003</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192893" style="color:red;">http://www.javaeye.com/topic/192893</a>&nbsp;
          发表时间: 2008年05月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          我个人认为Redmine是ROR平台上使用最多的一个项目管理系统，现在在rubyforge的下载排行榜上排在28位。<br />所以我也选择以Redmine为基础开发我们自己使用的项目管理系统，计划在其上以插件形式开发一些增强性和有特殊要求的功能，目前完成的工作主要是汉化...插件仍在开发中....<br /><br />首先感谢早期做汉化的同志们，最近一段时间来我接手了原来的汉化工作并保持更新，一般情况下如果有了新的资源文件，我会在1－2天内翻译完成，因为每次新增的条目很少^_^<br />目前汉化程度99％，所有的资源文件都已翻译，剩下的是有个别单词作者没有放到资源文件中..<br /><br />现在正在翻译Redmine手册，此工作预计很快可以完成<br /><br />下一步将正式开始插件开发，其实我最想做的是一个整理FAQ的工具，和javaeye的问答有些类似，也有一些差别，除了能够整理出问题解答之外，还有一个目标是可以生成打印版的问题解决手册<br /><br />非常希望对redmine感兴趣或者使用redmine的同志们一起交流<br /><br />有关redmine的各种问题，特别是汉化问题，都欢迎到我们的建立的redmine系统来交流<br /><a href="http://218.107.133.32:5000/wiki/ezwork" target="_blank">http://218.107.133.32:5000/wiki/ezwork</a><br />当然在javaeye或者redmine官网上进行交流也非常欢迎
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192893#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 12:06:17 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192893</link>
        <guid>http://www.javaeye.com/topic/192893</guid>
      </item>
          <item>
        <title>在console中强制class reloading</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://seemoon.javaeye.com">seemoon</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192882" style="color:red;">http://www.javaeye.com/topic/192882</a>&nbsp;
          发表时间: 2008年05月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          ror开发的一个强势就是其解释性勿须编译，对源文件的更改可以立即体现在运行中，当启动rails应用之后，可以运行ruby script/console对应用进行即时调试，比如对model进行query测试，检验find查询的语句编写和结果查看，好处是不用打开数据库控制台就可以进行数据库编程，在检查查询的同时也校验了程序的编写，提高了开发效率。最近在开发当中遇到个问题，就是development mod下启动rails应用之后，在console中做调试时发现对源文件的修改并不能立即生效，检查config/environments/development.rb配置，config.cache_classes = false，应该是支持类的重新加载，而通过browser发出请求，修改是生效的，如何解决这个问题？当然一个办法就是需要不停的关闭和重启rails应用，但是太麻烦了，后来查了一下网上的资源，发现可以在console当中输入‘reload!’强制rails进行类重新加载，问题得到解决。<br /><br />config.cache_classes配置选项的设置意义如下：<br /><div class="quote_title">引用</div><div class="quote_div"><br />Without getting into too much nitty-gritty detail, when the config.cache_classes setting is true, Rails will use Ruby's require statement to do its class loading, and when it is false, it will use load instead.<br /></div><br /><br />至于require与load的不同，可以查看yjjxf的一篇文章：<br /><a href="http://www.javaeye.com/topic/79864" target="_blank">http://www.javaeye.com/topic/79864</a>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192882#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 11:34:15 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192882</link>
        <guid>http://www.javaeye.com/topic/192882</guid>
      </item>
          <item>
        <title>为什么validates_presence_of的错误消息不提示呢?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xl45591275.javaeye.com">xl45591275</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192381" style="color:red;">http://www.javaeye.com/topic/192381</a>&nbsp;
          发表时间: 2008年05月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          Web敏捷开发第10章的例子...怎么验证不提示错误呢?<br /><strong>有一个模型</strong><br /><pre name="code" class="ruby">
class Order &lt; ActiveRecord::Base
  has_many :line_items
  
  validates_presence_of :name
  validates_presence_of :address
  validates_presence_of :email
  validates_presence_of :pay_type
  
  PAYMENT_TYPES =[
    ["Check","check"],
    ["Credit card","cc"],
    ["Purchase order","po"]
  ]
  
  def add_line_items_from_cart cart
    cart.items.each do |item|
      li = LineItem.from_cart_item(item)
      line_items &lt;&lt; li
    end
  end
  
end

</pre><br /><br /><strong>有一个控制器</strong><br /><pre name="code" class="ruby">
  #准备结账
  def checkout
    @cart = find_cart
    if @cart.items.empty?
      redirect_to_index("您没有选择任何商品")
    else
      @roder = Order.new
    end
  end

  #结账
  def save_order
    @cart = find_cart
    @order = Order.new(params[:order])
    @order.add_line_items_from_cart(@cart)
    if @order.save
      session[:cart] = nil
      redirect_to_index("订单提交成功!")
    else
      redirect_to :action => :checkout
    end
  end
</pre><br /><br /><strong>有一个rhtml</strong><br /><pre name="code" class="html">
&lt;% form_for :order , :url => {:action => :save_order} do |form| %>
    &lt;p>
      &lt;label for="order_name">姓名:&lt;/label>
      &lt;%= form.text_field :name,:size => 40 %>
    &lt;/p>
    &lt;p>
      &lt;label for="order_address">地址:&lt;/label>
      &lt;%= form.text_area :address,:rows => 3,:cols => 40 %>
    &lt;/p>
    &lt;p>
      &lt;label for="order_email">Email:&lt;/label>
      &lt;%= form.text_field :email,:size => 40 %>
    &lt;/p>
    &lt;p>
      &lt;label for="order_pay_type">姓名:&lt;/label>
      &lt;%= form.select :pay_type,Order::PAYMENT_TYPES,:prompt => "选择结账方式" %>
    &lt;/p>
    &lt;%= submit_tag("结账", :class => "submit") %>
  &lt;%end%>
</pre><br /><br />通过checkout创建表单,同时创建的order对象.表单提交以后.各个属性被正确的赋值了,在@order.save执行失败以后正常转回了checkout方法..但是validates_presence_of验证失败的错误却没有提示出来..实在是没发现代码上的问题...麻烦各位帮忙看看吧.
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192381#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 12 May 2008 21:59:06 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192381</link>
        <guid>http://www.javaeye.com/topic/192381</guid>
      </item>
          <item>
        <title>Ruby每周一测 - 海龟画图</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://quake.javaeye.com">Quake Wang</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192746" style="color:red;">http://www.javaeye.com/topic/192746</a>&nbsp;
          发表时间: 2008年05月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          Ruby每周一测 - <a href="http://rubyquiz.com/" target="_blank">Ruby Quiz</a> 是Ruby Talk邮件列表上的一个持续了很长时间活动，每周有一个小题目被提出来，然后大家进行解答讨论。Amazon上还有相关的书： <a href="http://www.amazon.com/Best-Ruby-Quiz-Pragmatic-Programmers/dp/0976694077" target="_blank">Best of Ruby Quiz</a>。我尝试挑选其中的一些题目进行翻译，做一个每周一测系列，欢迎大家参与讨论。<br /><br />-----题目分割线-----<br />海龟作图(Logo)是我最早学习的一种编程语言，相信许多我的同龄人都接触过这个语言，正是它让我对编程产生了浓厚兴趣，在rubyquiz上看到<a href="http://rubyquiz.com/quiz104.html" target="_blank">这篇利用ruby实现海龟画图的每周一测后</a>，倍感亲切：<br /><div class="quote_title">引用</div><div class="quote_div"><br />想像你控制了一只小海龟在一片沙滩上行动，你可以控制它前进(FORWARD)，后退(BACK)，左右转弯(LEFT/RIGHT)，然后用它的尾巴抬起，放下来作画(PENUP/PENDOWN)<br /></div><br /><br />举例来说，画一个100*100的正方形，可以这样写：<br /><pre name="code" class="ruby">
pen_down
4.times { forward 100; right 90 }
</pre><br /><br />完成这次的每周一测你需要做一些准备工作：<br />1. 下载一个<a href="http://rubyquiz.com/turtle.zip" target="_blank">turtle.zip</a>，这里包含了基本的框架<br />2. 安装tcl/tk以及相关的ruby库<br /><br />在解压后的zip包里面，有个lib/turtle.rb，完成它里面的方法就实现了海龟画图的功能。<br /><br />通过调用<br />ruby turtle_viewer.rb samples/byzantium.rb <br />可以看到附带的几个例子效果。<br /><br />让我们来重温一下儿时熟悉的小海龟画图吧：<br /><img src="http://www.javaeye.com/upload/attachment/23937/adb6fa8d-7c2e-390c-b849-6134cadd6ac8.png" /><br /><br /><pre name="code" class="ruby">
def byzantium(r, n)
   return if n &lt; 1
   fd r; rt 135
   4.times {
      pd; fd 2 * r * sin(45 * DEG); pu
      byzantium(r / 2, n - 1)
      rt 90
   }
   lt 135; bk r
end
byzantium(100, 4)
</pre><br /><br />-----解答分割线-----<br />原题和一些解法在这里：<a href="http://rubyquiz.com/quiz104.html" target="_blank">http://rubyquiz.com/quiz104.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192746#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 May 2008 22:39:04 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192746</link>
        <guid>http://www.javaeye.com/topic/192746</guid>
      </item>
          <item>
        <title>空格的 ”陷阱“</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://rubynroll.javaeye.com">rubynroll</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192547" style="color:red;">http://www.javaeye.com/topic/192547</a>&nbsp;
          发表时间: 2008年05月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          今天无意中碰到一个空格带来的“陷阱”：<br /><br /><pre name="code" class="ruby">def a
  10
end

b = a+1
=> 11

b = a + 1
=> 11

b = a+ 1
=> 11

b = a +1
ArgumentError: wrong number of arguments (1 for 0)
        from (irb):8:in `a'
        from (irb):8
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192547#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 May 2008 12:27:31 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192547</link>
        <guid>http://www.javaeye.com/topic/192547</guid>
      </item>
          <item>
        <title>Rails 2.1 的三个新特性</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://maninred.javaeye.com">chenk85</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192431" style="color:red;">http://www.javaeye.com/topic/192431</a>&nbsp;
          发表时间: 2008年05月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <a href="http://redworld.blog.ubuntu.org.cn/2008/05/12/rails21%e6%96%b0%e7%89%b9%e6%80%a7%e4%b9%8bactiverecordbasecreate%e7%9a%84%e5%8f%98%e5%8c%96/" target="_blank"><span style="font-size: large">script/dbconsole</span></a><br /><br />script/dbconsole 脚本允许用户使用Rails的控制台客户端连接到数据库。<br /><br />如果需要连接到MySQL的生产数据库作一些操作，直接运行 RAILS_ENV=production script/dbconsole 就能登录到数据库服务器上并使用MySQL的命令行客户端。当然，这个脚本也同样在 PostgreSQL 和 SQLite 数据库运行。<br /><br />要在当前Rails应用程序中使用这个新脚本，就要先升级到edge Rails，再运行 rake rails:update:script 。好好享受这个脚本的便利吧。<br /><br /><br /><a href="http://redworld.blog.ubuntu.org.cn/2008/05/12/rails21%e6%96%b0%e7%89%b9%e6%80%a7%e4%b9%8b%e6%96%b0%e7%9a%84migrations%e6%96%b9%e6%b3%95change_table/" target="_blank"><span style="font-size: large">ActiveRecord migrations 的新方法 change_table</span></a><br /><br />现在可以通过 change_table 代码块来完成对数据库表的修改。<br /><br /><pre name="code" class="java">    change_table :videos do |t|
      t.add_timestamps
      t.add_belongs_to :goat
      t.add_string :name, :email, :limit => 20
      t.remove_column :name, :email # takes multiple arguments
      t.rename :new_name
      t.string :new_string_column # executes against the renamed table name
    end</pre><br /><br />补充些要注意的事情：<br /><br />    * add_XXX 方法会添加一个新列，比如 add_string 会添加一个新的 string 类型的字段。<br />    * Of course, add_timestamps 会添加神奇的 created_at 和 updated_at 的 datetime 类型的字段。<br />    * remove_column 现在可以接受多个参数。<br />    * rename 方法会重命名数据库表。<br /><br /><a href="http://redworld.blog.ubuntu.org.cn/2008/05/12/rails21%e6%96%b0%e7%89%b9%e6%80%a7%e4%b9%8bactiverecordbasecreate%e7%9a%84%e5%8f%98%e5%8c%96/" target="_blank"><span style="font-size: large">Rails2.1新特性之ActiveRecord::Base.create的变化</span></a><br /><br />ActiveRecord::Base.create 现在可以像 ActiveRecord::Base.new 一样带上一个代码块参数了。<br /><br /><pre name="code" class="java">    @person = Person.create(params[:person]) do |p|
     p.name = 'Konata Izumi'
     p.age = 17
    end</pre>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192431#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 May 2008 00:11:19 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192431</link>
        <guid>http://www.javaeye.com/topic/192431</guid>
      </item>
          <item>
        <title>Iconv的GB2312无法支持陶喆的&quot;喆&quot;字</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenjinlai.javaeye.com">chenjinlai</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192345" style="color:red;">http://www.javaeye.com/topic/192345</a>&nbsp;
          发表时间: 2008年05月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          咋办?这个字比较重要,不能ignore掉...<br /><br />如下ruby代码不能执行...<br /><pre name="code" class="java">require "iconv"
puts Iconv.iconv("GB2312","UTF-8",'陶喆')</pre><br /><br />t.rb:2:in `iconv': "\xE5\x96\x86" (Iconv::IllegalSequence)<br />        from t.rb:2:in `&lt;main>'<br /><br />如果陶喆里的那个'喆'去掉就没问题...<br /><br />我的目的是用RSS::Parser.parse解析rss文章,发现有喆的文章会因为那个字无法解析有乱码...<br /><br />我又用了python<br /><pre name="code" class="java">url = 'http://blogsearch.baidu.com/s?word=%D6%F7%B3%D6%C8%CB%D6%EC%B5%A4&tn=baidublogrss&bsm=0&rn=10'
import feedparser
c = feedparser.parse(url)
for e in c.entries:
  print e.title</pre><br />显示 'gbk' codec can't encode character u'\xc3' in position 0: illegal multibyte sequence<br /><br />问题解决了<br />require 'rss/2.0'<br />require "iconv"  <br />url = 'http://blogsearch.baidu.com/s?word=%D6%F7%B3%D6%C8%CB%D6%EC%B5%A4&tn=baidublogrss&bsm=0&rn=10'<br />text = open(url).read<br />text.sub!(/gb2312/,'gb18030')<br />feed = RSS::Parser.parse(text.to_s,false) <br />for item in feed.items<br />  puts Iconv.iconv("gb18030","utf-8",item.title)<br />end<br /><br />网上的gb2312字库不全,要改成gb18030就行了
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192345#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 12 May 2008 19:22:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192345</link>
        <guid>http://www.javaeye.com/topic/192345</guid>
      </item>
          <item>
        <title>ActionMailer发送邮件附件错误</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dzz1001.javaeye.com">dzz1001</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192176" style="color:red;">http://www.javaeye.com/topic/192176</a>&nbsp;
          发表时间: 2008年05月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          使用ActionMailer发送邮件附件时一直处于长时间请求状态，邮件无法发送。<br /><pre name="code" class="ruby">
  filename = "D:\\ruby\\rails_apps\\sg\\public\\play.jpg"	
  file = Hash.new()
  file['filename'] = Pathname.new(filename).basename
  file['mimetype'] = MIME::Types.type_for(filename).to_s
  File.open(filename,"rb") { |fp| file['attachment'] &lt;&lt; fp.read() }
  attachment(:content_type => file['mimetype'], :filename => file['filename'], :body => file['attachment'])
</pre><br />但是如果我是用下面的代码来测试的话，邮件可以发送，附件也可以发送，但是附件打不开，发送的邮件有问题。<br /><pre name="code" class="ruby">
  attachment(:content_type => "image/jpeg", :body => File.read("public/play.jpg"))
</pre><br />各位有遇到这种问题吗？能够给我提点建议，谢谢！
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192176#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 12 May 2008 12:11:00 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192176</link>
        <guid>http://www.javaeye.com/topic/192176</guid>
      </item>
          <item>
        <title>RoR项目</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lnj.javaeye.com">lnj</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191710" style="color:red;">http://www.javaeye.com/topic/191710</a>&nbsp;
          发表时间: 2008年05月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          初学RoR，近期正在给朋友做一个小型库存管理系统，希望和大家交流。<br /><br /><ul><li>详情参见：<a href="http://code.google.com/p/devtemptation-store/" target="_blank">http://code.google.com/p/devtemptation-store/</a></li><li>demo：<a href="http://xiangmin.kmip.net:7003" target="_blank">http://xiangmin.kmip.net:7003</a></li><li>截图：</li><img src="http://devtemptation-store.googlecode.com/files/screen_shot_1.jpg" /><br /><img src="http://devtemptation-store.googlecode.com/files/screen_shot_2.jpg" /><br /><img src="http://devtemptation-store.googlecode.com/files/screen_shot_3.jpg" /><br /></ul>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191710#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 10 May 2008 12:08:45 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191710</link>
        <guid>http://www.javaeye.com/topic/191710</guid>
      </item>
          <item>
        <title> Rails开发技巧集锦</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://rubyonrailscn-org.javaeye.com">rubyonrailscn.org</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191976" style="color:red;">http://www.javaeye.com/topic/191976</a>&nbsp;
          发表时间: 2008年05月11日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          昨天在网上看到一个Rails开发技巧一览，看了觉得很有用，所以翻译了，贴在 Ruby on Rails 中文 Wiki <a href="http://wiki.rubyonrailscn.org" target="_blank">http://wiki.rubyonrailscn.org</a>上。转发在这里，希望对大家有帮助。<br /><br />本列表整理自Massive List of Rails Development Tips<br /><br />    * 将你的程序所用到的密码和API证书号保存在一个自定义的配置文件中。我使用一个YAML并沿用了database.yml类似的格式。<br />    * 有需要的时候就使用常量。不要重复诸如你的客服邮件地址这类字符串，而是将它们保存在常量中（可以保存在environment.rb或者你自己的配置文件中），然后在整个程序中使用该常量。<br />    * 保持使用UTC时间，这可以使你的程序有更好的一贯性。（不过Rails 2.1的Timezone可提供更好的功能）<br />    * 请勿在一个 Active Record? 数据模型中遍历另一个数据模型。那样的话会产生大量的SQL查询操作。正确的实现方法是：1）如果多个数据模型已经相互关联，那么可以使用find(: include) 方法进行勤式数据获取，那样的话在一个SQL查询中就可以获取多个数据模型中的数据。2）如果这些数据模型没有被关联，那么你可以写一个自定义的 find，在其中采用select和join来定义跨表查询。这样的话你可能需要你的数据库模型中为非本表的域定于值读取方法以获得正确类型的值。<br />    * 请小心使用二进制域。在默认情况下，数据库查询会返回所有的域，包括任何二进制域中的完整内容。请使用 :select 来定义所需要获取的域，从而减轻系统负荷。<br />    * 要生成周期性报表时，请为报表数据创建一个专用数据表，然后将报告数据缓存到该表中。这样做要比每次现实年度或月度报告是重新产生数据要来的快得多。<br />    * 创建一个国家列表数据库。默认情况下，Rails使用字符串来选择和罗列国家，这对于数据模式的一致性来说是有害的。而且在生成报告时会产生问题。<br />    * 避免编写臃肿的控制器(controller)，不要将一堆方法塞入controller，如果一个controller中有超过10个方法，那么请重新考虑你的设计<br />    * 保持你的控制器和视图（view）尽量精简，在绝大多数情况下，你的大部分代码应该位于数据模型中，而不是控制器或者视图中。<br />    * 不要在session中保存对象。如果需要的话，在session中保存数字或者字符串，然后在处理单个请求的时候根据session中的内容从数据库取回数据。（Rails 2.0 中的新session机制解决了这个问题）<br />    * 避免处理信息量超大的请求回复(response)。遇到要处理大信息量的请求时，你可以将改记录标志为有待处理，然后使用一个cron事务或者消息服务来处理这个花费时间的任务。Background RB? 也是一个选择. (我使用这种基数来过滤blog中的SPAM).<br />    * 当需要批量发送邮件时，请使用 ar_mailer，而不要在一个Rails的请求回复过程中进行发送。<br />    * 使用 exception_notification插件， munin, monit等工具来监管你的应用程序和服务器。<br />    * 不要吝啬硬件投入，那样的话你因为劣质的备份或便宜的硬件，而很快不得不花钱请人解决那些问题。<br />    * 测试驱动（Test-drive）你的开发<br />    * 使用数据库索引来提供查询速度。Rails仅索引主键，所以你需要根据具体情况设定额外的索引。<br />    * 测量你的代码性能。使用ruby-prof gem 和插件测量你的代码，可以做些小修改便可使你的应用程序成倍提速。<br />    * 将图像相关的代码依赖度减少到最小。如果你的应用程序仅仅需要生成一些缩略图，那么不要将内存浪费在导入巨大的图像库上，相反可以使用mini-magick 或 image_science 等轻量级图像库。<br />    * 避免无节制地渲染小的片段（partials）<br />    * 使用CSS而避免使用行内标签来定义风格<br />    * 不要使用 Active Record? 的 serialize 选项在数据库中保存巨大的对象<br />    * 在数据模型中使用 attr_protected :fieldname 以避免关键数据被通过修改过的表单而改写。（attr_accessible 是更安全的方式，这里解释了为什么<br />    * 使用Ruby类和继承来重构重复的控制器代码<br />    * 使用 Javascrip 技巧将页面行为从页面代码标签中分离出来<br />    * 将能够自给自足的类和模组（module）封装成 plugin 或 Ruby Gems?.<br />    * 尽可能缓存经常被访问的数据库。<br />    * 编写自定义的 Test::Unit assertions 或 rSpec matchers 来帮助调试测试中出现的错误<br />    * 使用 Linux 上的logrotate daemon 来 Rotate the Rails 和 Mongrel 的日志文件<br />    * 需要可靠的备份需要<br />    * 使用 Capistrano 或 Vlad 来自动部署你的网络应用程序<br />    * 尽量保持方法精简。当一个方法长过10行时，请考虑重构它<br />    * 运行 flog 来找出过于复杂的方法和类<br />    * 不必过多使用条件语句。避免使用多层嵌套的if语句，而使用Ruby的case语句和Ruby对象来进行条件处理。<br />    * Ruby 提供强力的元编程功能，不过这个功能很容易被滥用 (比如 eval 和 method_missing).<br />    * 熟悉了解各种流行的插件。 Instead of re-implementing the wheel, save yourself some time by using well tested, popular plugins.<br />    * 在你的login 或 user 控制器中使用 filter_parameter_logging :password, :password_confirmation 来从日志中过滤重要新。负责你的程序日志中将充满用户的密码
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191976#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 May 2008 19:30:41 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191976</link>
        <guid>http://www.javaeye.com/topic/191976</guid>
      </item>
          <item>
        <title>Simple_captcha无法刷新图像的问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://leomayleomay.javaeye.com">leomayleomay</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191972" style="color:red;">http://www.javaeye.com/topic/191972</a>&nbsp;
          发表时间: 2008年05月11日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          在我的RoR应用中，使用了simple_captcha，主要用于用户提交评论之前的验证。<br />最近在用户提交评论模块引进了ajax技术，用户提交评论后无须刷新页面，新的评论就会出现在评论区，但是simple_captcha的图像却没有刷新，请问各位有没有遇到类似的问题，如何解决，谢谢。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191972#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 May 2008 18:56:20 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191972</link>
        <guid>http://www.javaeye.com/topic/191972</guid>
      </item>
          <item>
        <title>rails2..02 中对页面表单提交，单个中文字的问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jiachengxi38.javaeye.com">jiachengxi38</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191071" style="color:red;">http://www.javaeye.com/topic/191071</a>&nbsp;
          发表时间: 2008年05月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          用的是rails2.0，所有的编码方式用utf-8，中文没乱码现象，但是比如说向数据库插数据的时候提交中文表单，就是出现了问题，报错的是<br />OCIError: ORA-01756: ����ڵ��ַ�û����ȷ����: INSERT INTO groups (updated_at, title, id, created_at) VALUES('2008-05-08 14:24:36', '好', 10138, '2008-05-08 14:24:36')<br />错误就在中间那个'好'的字段，如果插入的是中文2的倍数的，那么是不会报这个错误的，比如插“好的”后是“好 ”加空格，这个也能顺利插入，就是出现中文字数为单数的时候就会出错的，oracle已经检查过了，应该不是出在数据库上面的错误，rails在这方面应该怎么解决了？希望大家能给个好建议，不甚感激！
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191071#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 08 May 2008 14:27:27 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191071</link>
        <guid>http://www.javaeye.com/topic/191071</guid>
      </item>
          <item>
        <title>On average JRuby runs 2.5 times faster than ruby??</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wlf.javaeye.com">wlf</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191647" style="color:red;">http://www.javaeye.com/topic/191647</a>&nbsp;
          发表时间: 2008年05月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          I got the idea from the article(<a href="http://www.artima.com/weblogs/viewpost.jsp?thread=230311" target="_blank">http://www.artima.com/weblogs/viewpost.jsp?thread=230311</a>),<br /><br />Is that true? does anybody try JRuby 1.1.1 ?
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191647#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 10 May 2008 06:45:50 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191647</link>
        <guid>http://www.javaeye.com/topic/191647</guid>
      </item>
          <item>
        <title>如何在 find(params[:id] 报RecordNotFound错误后，跳转指定页面？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caidehen.javaeye.com">CaiDeHen</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191531" style="color:red;">http://www.javaeye.com/topic/191531</a>&nbsp;
          发表时间: 2008年05月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          就是在action中，当传入的ID通过 model.find(params[:id])没找到时，比如用户手动输入的id。就会出现难看的ActiveRecord::RecordNotFound页面。<br />我现在的做法是在ApplicationController加了<br /><pre name="code" class="java">
around_filter :rescue_record_not_found

def rescue_record_not_found
  begin
    yield
  rescue ActiveRecord::RecordNotFound
    render :file => "#{RAILS_ROOT}/public/404.html"
  end
end
</pre><br />一般来说应该怎么处理这个问题？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191531#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 09 May 2008 17:53:31 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191531</link>
        <guid>http://www.javaeye.com/topic/191531</guid>
      </item>
          <item>
        <title>Rspec测试的问题?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wosmvp.javaeye.com">wosmvp</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191376" style="color:red;">http://www.javaeye.com/topic/191376</a>&nbsp;
          发表时间: 2008年05月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          如何测试mail , observer啊？自己建立一个？<br />有没有generate可以直接生成呢？好像有可以生成建立plugin的rspec的generate……
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191376#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 09 May 2008 12:35:07 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191376</link>
        <guid>http://www.javaeye.com/topic/191376</guid>
      </item>
          <item>
        <title>Ruby中实现stream</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dennis-zane.javaeye.com">dennis_zane</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191238" style="color:red;">http://www.javaeye.com/topic/191238</a>&nbsp;
          发表时间: 2008年05月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;
流是通过延时求值实现的，Ruby中实现stream也是可以做到，可惜就是没有尾递归优化。按照sicp，首要的是两个函数：delay和force：</p>
<pre name="code" class="ruby">def mem_proc(exp)
  alread_run=false
  result=false
  lambda{
    if !alread_run
      result=exp.call
      alread_run=true
      result
    else
      result
    end
  }
end
def force(delayed_object)
  delayed_object.call
end
def delay(exp)
  mem_proc(lambda{exp})
end</pre>
&nbsp;
<p>
&nbsp;&nbsp;&nbsp; delay函数返回延时对象，就是对于未来某个时间求值表达式的承诺；force函数以延时对象为参数，进行相应的求值工作，这里的mem_proc用于记忆已经求值过的表达式。定义stream的constructor和selector函数：</p>
<pre name="code" class="ruby">def cons_stream(a,b)
  return a,delay(b)
end
def stream_car(s)
  s[0]
end
def stream_cdr(s)
  force(s[1])
end
def stream_null?(s)
  s.nil? or s==[]
end</pre>
&nbsp;
<p>
&nbsp;&nbsp;&nbsp;
用Ruby中的数组充当&ldquo;粘合剂&rdquo;，stream_car直接返回第一个元素，而stream_cdr需要用force求值表达式，履行承诺。另外，将空
数组[]作为the-empty-stream。再定义几个高阶函数，map、filter和foreach等：</p>
<pre name="code" class="ruby">def stream_enumerate_interval(low,high)
  if low&gt;high
    return []
  else
    cons_stream(low,stream_enumerate_interval(low.succ,high))     
  end
end
def stream_ref(s,n)
  if n==0
    stream_car(s)
  else
    stream_ref(stream_cdr(s),(n-1))     
  end
end
def stream_map(proc,s)
  if stream_null?(s)
    []
  else
    cons_stream(proc.call(stream_car(s)),stream_map(proc,(stream_cdr(s))))    
  end
end
def stream_filter(pred,s)
  if stream_null?(s)
    []
  elsif pred.call(stream_car(s))
    cons_stream(stream_car(s),stream_filter(pred,stream_cdr(s)))
  else
    stream_filter(pred,stream_cdr(s))   
  end
end
def stream_for_each(proc,s)
  if stream_null?(s)
    :done
  else
     proc.call(stream_car(s))
     stream_for_each(proc,stream_cdr(s))     
  end
end
def display_stream(s)
  stream_for_each(lambda{|item| puts item},s)
end</pre>
<p>
&nbsp;&nbsp;&nbsp; 最后，看下例子：</p>
<pre name="code" class="ruby">puts "s:"
s=stream_enumerate_interval(1,5)
display_stream(s)
puts "odd_s:"
odd_s=stream_filter(lambda{|x| x%2==1},s)
display_stream(odd_s)
puts "ss:"
ss=stream_map(lambda{|x|x*x},s)
display_stream(ss)</pre>
&nbsp;
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191238#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 08 May 2008 22:36:50 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191238</link>
        <guid>http://www.javaeye.com/topic/191238</guid>
      </item>
          <item>
        <title>请问有没有open source的digg类型的rails webapp?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xruby.javaeye.com">yawl</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/191009" style="color:red;">http://www.javaeye.com/topic/191009</a>&nbsp;
          发表时间: 2008年05月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          也就是类似javaeye博客主页那种可以vote up/down的.<br /><br />写起来应该不难，但不想reinvent wheel. 谢谢。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/191009#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 08 May 2008 12:27:17 +0800</pubDate>
        <link>http://www.javaeye.com/topic/191009</link>
        <guid>http://www.javaeye.com/topic/191009</guid>
      </item>
          <item>
        <title>ruby中的net::http的问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ygao1982.javaeye.com">ygao1982</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/190573" style="color:red;">http://www.javaeye.com/topic/190573</a>&nbsp;
          发表时间: 2008年05月07日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          require 'net/http'<br />    require 'uri'<br />    @clarifyurl=URI.parse('http://clarifyweb.xx.com:9140/dt/Query?act=query')<br />    Net::HTTP.version_1_2<br />    Net::HTTP.start(@rooturl.host,@rooturl.port) {|http|<br />      @req1 = http.get(rooturl.path)//or @req1 = http.get('dt/Query?act=query')<br />      print @req1.body<br />    }<br />    print @rooturl.path<br /><br />都不能正确发出http request, 因为rooturl.path=/dt/Query 而不是/dt/Query?act=query<br />请问如何解决?不能被parse的问题
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/190573#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 May 2008 13:43:26 +0800</pubDate>
        <link>http://www.javaeye.com/topic/190573</link>
        <guid>http://www.javaeye.com/topic/190573</guid>
      </item>
      </channel>
</rss>
