<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Alvin Ye 上海捷道 Agideo</title>
    <description></description>
    <link>http://agi-alvin.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>每天五个英文句子 20080731</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/222389" style="color:red;">http://agi-alvin.javaeye.com/blog/222389</a>&nbsp;
          发表时间: 2008年07月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          26.Please specify what you will do. <br /> 请你详述一下你将做什么。 <br /><br />27.We should specify a time and a place for the meeting. <br /> 我们应指定会议的时间和地点。 <br /><br />28. You'd have a better chance of catching the train if you took a bus to the station instead of walking<br /><br />29.English has become an international language. Wherever you go , English is always commonly used. It is convenient to know the language.<br /><br />30. I don't know what to do. <br />连读只发第二个辅音字母
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/222389#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 31 Jul 2008 17:22:54 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/222389</link>
        <guid>http://agi-alvin.javaeye.com/blog/222389</guid>
      </item>
      <item>
        <title>uninitialized constant Gem::GemRunner (NameError)</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/220893" style="color:red;">http://agi-alvin.javaeye.com/blog/220893</a>&nbsp;
          发表时间: 2008年07月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          vi /usr/bin/gem<br /><br />在  require 'rubygems'<br /><br />后面加上<br /><br />require 'rubygems/gem_runner'
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/220893#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 29 Jul 2008 09:30:03 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/220893</link>
        <guid>http://agi-alvin.javaeye.com/blog/220893</guid>
      </item>
      <item>
        <title>每天五个英文句子 20080727</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/220211" style="color:red;">http://agi-alvin.javaeye.com/blog/220211</a>&nbsp;
          发表时间: 2008年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          21.<br />He's been out of a job for month.<br /><br />22.<br />Would you care for a cup of coffee?<br /><br />23.<br />My intentions were good.<br /><br />24.<br />Would you mind if I took a day off.<br /><br />25.<br />There were 15 votes in favor of my suggestion, and 23 against.
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/220211#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Sun, 27 Jul 2008 21:41:10 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/220211</link>
        <guid>http://agi-alvin.javaeye.com/blog/220211</guid>
      </item>
      <item>
        <title>每天五个英文句子 20080704</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/211486" style="color:red;">http://agi-alvin.javaeye.com/blog/211486</a>&nbsp;
          发表时间: 2008年07月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          16. Nothing down, nothing up.<br />没有起, 就没有落<br /><br />收小腹, 张大嘴, 咬舌头<br /><br />17. To get ahead you'll have to work long hours and take short vacations.<br />想成功, 多流汗, 少享受<br /><br />18. No sweet without sweat.<br />没有辛苦的劳动就没有甜蜜的收获<br /><br />舀水音 拉长音 收小腹 张大嘴<br /><br />19. He who makes no mistakes, makes nothing.<br />不犯错,将一事无成<br /><br />20.I've heard so much about you.<br />久仰大名
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/211486#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 04 Jul 2008 13:07:33 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/211486</link>
        <guid>http://agi-alvin.javaeye.com/blog/211486</guid>
      </item>
      <item>
        <title>每天五个英文句子 20080630</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/209947" style="color:red;">http://agi-alvin.javaeye.com/blog/209947</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          11. I hope you're enjoying your stay here.<br />我希望你在这里过得愉快<br /><br />12. You have my word.<br />我向你保证<br /><br />13. I think exactly the same way.<br />我完全同意<br /><br />14. Tell me all about your troubles.<br />把你的麻烦告诉我吧<br /><br />15. It's never to later to lean.<br />什么时候学习都不晚<br /><br /><br />--<br />注: 以上句子来自, &lt;&lt;李阳疯狂英语>> 十大焦点学习卡.<br /><br />我觉得李阳英语的学习方法很不错, 向大家推荐.<br /><br />另外, 在这里写BLOG 只是为了自我督促
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/209947#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Mon, 30 Jun 2008 22:15:46 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/209947</link>
        <guid>http://agi-alvin.javaeye.com/blog/209947</guid>
      </item>
      <item>
        <title>每天五个英文句子 20080628</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/208973" style="color:red;">http://agi-alvin.javaeye.com/blog/208973</a>&nbsp;
          发表时间: 2008年06月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          6. <br />How are you doing?<br />你过得好吗, 最地道的打招呼, 发音 发泄, 夸张 怒吼<br />I'm doing great.<br /><br />我过得很好<br />7.<br />Always do your best. What you plant now, you will harvest later.<br />凡事尽力去做, 国为付出才会收获<br />8.<br />Never accept failure, no matter how often it visits you. Keep on going.<br />Never give up. Never<br />再多的失败也绝不放弃<br />9. <br />To be successful, the first thing to do is fall in love with your work.<br />成功的要素是热爱你的事业<br />10<br />Always bear in mind that your own resolution to succeed is more important than any other thing<br />永远牢记, 要想成功, 有决心是至关重要的
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/208973#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 28 Jun 2008 17:06:38 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/208973</link>
        <guid>http://agi-alvin.javaeye.com/blog/208973</guid>
      </item>
      <item>
        <title>每天五个英文句子 20080627</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/208601" style="color:red;">http://agi-alvin.javaeye.com/blog/208601</a>&nbsp;
          发表时间: 2008年06月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. You look great today.<br />（你今天看上去很棒。）【每天都可以用！】<br />2. You did a good job.<br />（你干得非常好。）【国际最通用的表扬！】<br />3. We're so proud of you.<br />（我们十分为你骄傲。）【最高级的表扬！】<br />4. I am very pleased with your work.<br />（我对你的工作非常满意。）【正式、真诚的赞扬！】<br />5. This is really a nice place.<br />（这真是个好地方！）【随口就说、但效果很好的表扬！】
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/208601#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 27 Jun 2008 12:23:17 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/208601</link>
        <guid>http://agi-alvin.javaeye.com/blog/208601</guid>
      </item>
      <item>
        <title>ruby 又一BUG 折磨了我很久 请大家注意了</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/202346" style="color:red;">http://agi-alvin.javaeye.com/blog/202346</a>&nbsp;
          发表时间: 2008年06月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="ruby">

irb(main):001:0> "%.0f" % 144.5
=> "145"
irb(main):002:0> exit

E:\Projects\test>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

</pre><br /><br /><pre name="code" class="java">
irb(main):001:0> "%.0f" % 144.5
=> "144"
irb(main):002:0> exit
root@ats1:~/apps/test# ruby -v
ruby 1.8.6 (2007-06-07 patchlevel 36) [x86_64-linux]
root@ats1:~/apps/baodao2008#

</pre><br /><br />不会吧, 再试试<br /><pre name="code" class="java">

irb(main):008:0> "%.0f" % 15.5
=> "16"
irb(main):009:0> "%.0f" % 16.5
=> "16"
irb(main):010:0> "%.0f" % 17.5
=> "18"
irb(main):011:0> "%.0f" % 18.5
=> "18"
irb(main):012:0> "%.0f" % 19.5
=> "20"

</pre><br /><br />搜索得到结果, 很多语言都是 "四舍六入五留双"<br />看了 Rails 源码 也就是我们写得所有的程序 中的.<br />number_with_delimiter, number_to_currency 全部都有BUG, 要全部找到改过来, 太恐怖了
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/202346#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 12 Jun 2008 08:48:46 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/202346</link>
        <guid>http://agi-alvin.javaeye.com/blog/202346</guid>
      </item>
      <item>
        <title>Winxp 网卡自动禁用 只有重启才能启用</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/199639" style="color:red;">http://agi-alvin.javaeye.com/blog/199639</a>&nbsp;
          发表时间: 2008年06月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          朋友的 Dell 1400 出现网卡自动禁用 只有重启才能启用<br /><br />网上搜到解决方案, 计下<br /><br />设备管理器<br />右键选中网卡，属性，电源管理<br />将“允许计算机关闭此设备以节省电源”去除勾选，然后确定
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/199639#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jun 2008 10:29:27 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/199639</link>
        <guid>http://agi-alvin.javaeye.com/blog/199639</guid>
      </item>
      <item>
        <title>rails 的测试的 bug 当你的 model 的 after_create 中有raise 时</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/188636" style="color:red;">http://agi-alvin.javaeye.com/blog/188636</a>&nbsp;
          发表时间: 2008年05月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          app/models/part.rb<br /><br /><pre name="code" class="ruby">
class Part &lt; ActiveRecord::Base
  def after_create
    raise "no way" if self.name == "test"
  end
end
</pre><br /><br />app/controllers/parts_controller.rb<br /><br /><pre name="code" class="ruby">
class PartsController &lt; ApplicationController
  def test
    Part.create!(:name => "test")
  end
end
</pre><br /><br />test/functional/parts_controller_test.rb<br /><br /><pre name="code" class="ruby">
require File.dirname(__FILE__) + '/../test_helper'

class PartsControllerTest &lt; ActionController::TestCase
  def test_test
    old_count = Part.count
    post :test rescue nil   
    assert_equal(old_count, Part.count)
  end
end
</pre><br /><br /><pre name="code" class="java">
    ruby test\functional\parts_controller_test.rb
</pre><br /><br />结果是<br /><br /><pre name="code" class="java">
&lt;2> expected but was
&lt;3>.
</pre><br /><br />日志是<br /><pre name="code" class="java">
Processing PartsController#test (for 0.0.0.0 at 2008-05-01 16:26:57) [POST]
  Session ID: 
  Parameters: {"action"=>"test", "controller"=>"parts"}
  [4;35;1mPart Create (0.000000)[0m   [0mINSERT INTO parts ("name", "updated_at", "created_at") VALUES('test', '2008-05-01 16:26:57', '2008-05-01 16:26:57')[0m
  [4;36;1mSQL (0.000000)[0m   [0;1mSELECT count(*) AS count_all FROM parts [0m
</pre><br />看到没. 居然没有 回滚<br /><br />换用集成测试<br />test/integration/model_hg_test.rb<br /><pre name="code" class="ruby">
require "#{File.dirname(__FILE__)}/../test_helper"

class ModelHgTest &lt; ActionController::IntegrationTest
  fixtures :parts

  def test_truth
    old_count = Part.count
    
    puts Part.find_by_sql("select * from parts").collect(&:id).join(", ")
    puts Part.find_by_sql("select * from parts").collect(&:name).join(", ")
    
    post '/parts/test'
    
    puts Part.find_by_sql("select * from parts").collect(&:id).join(", ")
    puts Part.find_by_sql("select * from parts").collect(&:name).join(", ")
    
    assert_equal(old_count, Part.count)
    
  end
end

</pre><br />结果是<br /><br /><pre name="code" class="ruby">

D:\t1\t1>ruby test\integration\model_hg_test.rb
Loaded suite test/integration/model_hg_test
Started
953125641, 996332877
MyString, MyString
953125641, 996332877, 996332878
MyString, MyString, test
F
Finished in 1.281 seconds.

  1) Failure:
test_truth(ModelHgTest)
    [test/integration/model_hg_test.rb:17:in `test_truth'
     E:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/integration.rb:547:in `
']:
&lt;2> expected but was
&lt;3>.

1 tests, 1 assertions, 1 failures, 0 errors
</pre><br /><br />没有 回滚<br /><br />狂汗!!!
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/188636#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 01 May 2008 16:39:19 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/188636</link>
        <guid>http://agi-alvin.javaeye.com/blog/188636</guid>
      </item>
      <item>
        <title>奇怪的错误 already initialized constant OPTIONS 及解决方案</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/171000" style="color:red;">http://agi-alvin.javaeye.com/blog/171000</a>&nbsp;
          发表时间: 2008年03月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          agideo@ats1:~/apps/app_name$ ruby script/server -e production<br />=> Booting Mongrel (use 'script/server webrick' to force WEBrick)<br />=> Rails application starting on http://0.0.0.0:3000<br />=> Call with -d to detach<br />=> Ctrl-C to shutdown server<br />** Starting Mongrel listening at 0.0.0.0:3000<br />** Starting Rails with production environment...<br />Exiting<br />/home/agideo/apps/app_name/vendor/rails/railties/lib/commands/servers/mongrel.rb:15: warning: already initialized constant OPTIONS<br />/home/agideo/apps/app_name/vendor/rails/railties/lib/commands/servers/mongrel.rb:18: undefined method `options' for []:Array (NoMethodError)<br />        from /usr/lib/ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require'<br />        from /usr/lib/ruby/1.8/rubygems/custom_require.rb:32:in `require'<br />        from /home/agideo/apps/app_name/vendor/rails/activesupport/lib/active_support/dependencies.rb:495:in `require'<br />        from /home/agideo/apps/app_name/vendor/rails/activesupport/lib/active_support/dependencies.rb:342:in `new_constants_in'<br />        from /home/agideo/apps/app_name/vendor/rails/activesupport/lib/active_support/dependencies.rb:495:in `require'<br />        from /home/agideo/apps/app_name/vendor/rails/railties/lib/commands/server.rb:39<br />        from script/server:3:in `require'<br />        from script/server:3<br /><br /><br />运行时奇怪的 错误<br /><br />网上的资料说缺少 gem<br /><br />找出所有的 require 来<br /><br /><pre name="code" class="java">grep -rni '^require' ./*  </pre><br /><br />对了N个小时  还是不行<br /><br />最后无意中 ruby script/console production  试了一下,看到了<br /><br />`gem_original_require': no such file to load -- action_web_service (MissingSourceFile)<br /><br />晕啊.就是它<br /><br />打开<br /><pre name="code" class="java">vi config/environment.rb</pre><br /><br />加一句<br /><br /><pre name="code" class="java">config.frameworks -= [ :action_web_service ]</pre><br /><br />当然你也可以<br /><br /><pre name="code" class="java">gem install actionwebservice</pre><br /><br />终于可以睡觉了<br /><br />rails 新的版本已经没有 action_web_service
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/171000#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 13 Mar 2008 23:41:15 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/171000</link>
        <guid>http://agi-alvin.javaeye.com/blog/171000</guid>
      </item>
      <item>
        <title>小心石头之 Ruby 是指针还是实例</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/157541" style="color:red;">http://agi-alvin.javaeye.com/blog/157541</a>&nbsp;
          发表时间: 2008年01月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">
x = "abc"
y = x
x = "xyz" 
puts y # abc

xx = "abc"
yy = xx
xx.gsub!(/c/, 'a')
puts yy # aba
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/157541#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Jan 2008 09:39:43 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/157541</link>
        <guid>http://agi-alvin.javaeye.com/blog/157541</guid>
      </item>
      <item>
        <title>Rails ajax 的联动的下拉框</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/144575" style="color:red;">http://agi-alvin.javaeye.com/blog/144575</a>&nbsp;
          发表时间: 2007年11月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <img src="http://agi-alvin.javaeye.com/upload/picture/pic/6343/e6d22b23-5aec-4c27-b7b6-566680568a63.jpg" alt="" /><br />
<br />
# app\controllers\examples_controller.rb<br />
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span class="keyword">class</span><span>&nbsp;ExamplesController&nbsp;&lt;&nbsp;ApplicationController&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;ajax_select&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="variable">@items</span><span>&nbsp;=&nbsp;%w{AA&nbsp;BB}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;get_sub_items&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;params[</span><span class="symbol">:item</span><span>]&nbsp;==&nbsp;</span><span class="string">&quot;AA&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="variable">@sub_items</span><span>&nbsp;=&nbsp;%w{AA1&nbsp;AA2}&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="variable">@sub_items</span><span>&nbsp;=&nbsp;%w{BB1&nbsp;BB2}&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;render&nbsp;<span class="symbol">:partial</span><span>&nbsp;=&gt;&nbsp;</span><span class="string">&quot;select&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
# app\views\examples\ajax_select.rhtml<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span>%=&nbsp;javascript_include_tag&nbsp;:defaults&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>Examples#ajax_select</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>Find&nbsp;me&nbsp;in&nbsp;app/views/examples/ajax_select.rhtml</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="tag">&lt;</span><span>%=&nbsp;select&nbsp;:obj,&nbsp;:att,&nbsp;&nbsp;@items,&nbsp;{},&nbsp;</span><span class="attribute">:onchange</span><span>&nbsp;=</span><span class="tag">&gt;</span><span>&nbsp;remote_function(</span><span class="attribute">:update</span><span>&nbsp;=</span><span class="tag">&gt;</span><span>&nbsp;&quot;sub_items&quot;,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">:method</span><span>&nbsp;=</span><span class="tag">&gt;</span><span>&nbsp;&quot;get&quot;,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">:with</span><span>&nbsp;=</span><span class="tag">&gt;</span><span>&nbsp;&quot;'</span><span class="attribute">item</span><span>='&nbsp;+&nbsp;value&quot;,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">:url</span><span>&nbsp;=</span><span class="tag">&gt;</span><span>&nbsp;{&nbsp;</span><span class="attribute">:controller</span><span>&nbsp;=</span><span class="tag">&gt;</span><span>&nbsp;:examples,&nbsp;</span><span class="attribute">:action</span><span>&nbsp;=</span><span class="tag">&gt;</span><span>&nbsp;:get_sub_items})&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%<span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">div</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;sub_items&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">select</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
#app\views\examples\_select.rhtml
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span>&lt;%=&nbsp;select(</span><span class="symbol">:obj</span><span>,&nbsp;</span><span class="symbol">:item</span><span>,&nbsp;</span><span class="variable">@sub_items</span><span>)&nbsp;%&gt;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/144575#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 28 Nov 2007 16:59:25 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/144575</link>
        <guid>http://agi-alvin.javaeye.com/blog/144575</guid>
      </item>
      <item>
        <title>小心石头 之 lose a fixtures (彻底解决)</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/138046" style="color:red;">http://agi-alvin.javaeye.com/blog/138046</a>&nbsp;
          发表时间: 2007年11月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. 经常出现是的本机的 rake test 正常 但是 CC上却是错的,&nbsp; 花了N个小时后发现是 少了一个fixtures <img src="/javascripts/fckeditor/editor/images/smiley/msn/sad_smile.gif" alt="" /><br />
<br />
原因是 本机与CC 服务器加载CC的顺序不一样.<br />
<br />
随手写一个rake&nbsp; 来解决这个问题<br />
<br />
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span>namespace&nbsp;</span><span class="symbol">:test</span><span>&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;task&nbsp;<span class="symbol">:each_file</span><span>&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;test_file_patterns&nbsp;=&nbsp;['test/unit/**/*_test.rb',&nbsp;'test/functional/**/*_test.rb',&nbsp;'test/integration/**/*_test.rb']&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;tests&nbsp;=&nbsp;[]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;test_file_patterns.<span class="keyword">each</span><span>&nbsp;</span><span class="keyword">do</span><span>&nbsp;</span><span class="variable">|p</span><span>|&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileList[p].<span class="keyword">each</span><span>&nbsp;{&nbsp;</span><span class="variable">|f</span><span>|&nbsp;tests.push&nbsp;f&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;tests.<span class="keyword">each</span><span>&nbsp;</span><span class="keyword">do</span><span>&nbsp;</span><span class="variable">|f</span><span>|&nbsp; <br />
    </span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rake::Task[<span class="string">&quot;</span></span><span><span>db:test:prepare</span></span><span><span class="string">&quot;</span><span>].invoke&nbsp;&nbsp; </span><span><br />
    </span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;<span class="string">&quot;===&nbsp;testing&nbsp;#{f}&nbsp;===&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;`ruby&nbsp;<span class="comment">#{f}`</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/138046#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Mon, 05 Nov 2007 13:11:08 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/138046</link>
        <guid>http://agi-alvin.javaeye.com/blog/138046</guid>
      </item>
      <item>
        <title>rails 在ubuntu 与 winxp 上的速度比较 (rake test)</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/135334" style="color:red;">http://agi-alvin.javaeye.com/blog/135334</a>&nbsp;
          发表时间: 2007年10月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在其它文章中看到 用rails ubuntu 性能最好</p>
<p>目前的项目 rake test 的速度让人受不了 就在自己家的电脑上小试了一把.</p>
<p>环境</p>
<p>CPU&nbsp; 赛扬 2.0 <br />
内存 512M</p>
<p><br />
硬盘1</p>
<p><font face="Arial">Ubuntu 7.04 &nbsp;(已经升级过了 到 7.10) <br />
Rails 1.2.2<br />
</font><font face="Arial">mysql&nbsp; Ver 14.12 Distrib 5.0.38, for pc-linux-gnu (i486) using readline 5.2<br />
ruby 1.8.5 (2006-08-25) [i486-linux]<br />
</font></p>
<p>硬盘2<br />
<br />
<font face="Arial">windows xp&nbsp; sp2<br />
rails 1.2.3<br />
ruby 1.8.6<br />
<br />
测试内容</font></p>
<p><font face="Arial"><font face="Arial">units</font><br />
</font><font face="Arial">198 tests, 649 assertions, 0 failures, 0 errors<br />
<br />
<font face="Arial">Ubuntu : <font face="Arial">Finished in 90.194303 seconds.<br />
<font face="Arial">WinXP:&nbsp;&nbsp; Finished in 45.437 seconds.</font></font></font></font></p>
<p><font face="Arial"><font face="Arial">functionals</font><br />
</font><font face="Arial">175 tests, 1628 assertions, 0 failures, 0 errors<br />
</font><br />
<font face="Arial">Ubuntu : <font face="Arial"><font face="Arial">Finished in 232.097588 seconds.<br />
</font><font face="Arial">WinXP:&nbsp;&nbsp; <font face="Arial">Finished in 145.812 seconds.</font></font></font></font></p>
<p>明显 winxp 比 ubuntu 要快很多. 不知道为什么, 是不是我哪里还没有配置正确?<br />
请ubuntu </p>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/135334#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 25 Oct 2007 09:25:07 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/135334</link>
        <guid>http://agi-alvin.javaeye.com/blog/135334</guid>
      </item>
      <item>
        <title>隐藏运行一个bat</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/101549" style="color:red;">http://agi-alvin.javaeye.com/blog/101549</a>&nbsp;
          发表时间: 2007年07月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>新建一个 *.vbs 文件</p><p>将以下两句复制进去</p><p>&nbsp;</p><p>Set shell = Wscript.createobject(&quot;wscript.shell&quot;)<br />
a = shell.run (&quot;c:\windows\msdot\auto.bat&quot;,0)</p><p>&nbsp;</p><p>OK了</p><p>&nbsp;</p><p>另外<br />
1、#隐藏窗口； <br />
2、#普通激活； <br />
3、#最小化激活； <br />
4、#最大化激活； <br />
5、#普通不激活； <br />
6、#最小化不激活。如果省略本参数，默认为&ldquo;普通激活&rdquo;方式。<br />
<br />
<br />
- delphi<br />
winexec(pchar(ExtractFilePath(Application.ExeName)+'\WMS.exe'),SW_SHOW);</p>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/101549#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Mon, 30 Jul 2007 17:04:00 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/101549</link>
        <guid>http://agi-alvin.javaeye.com/blog/101549</guid>
      </item>
      <item>
        <title> 读 Agile Web Development with Rails Second Edition 读书笔记 (四) </title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/106955" style="color:red;">http://agi-alvin.javaeye.com/blog/106955</a>&nbsp;
          发表时间: 2007年07月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          单元测试中 product.errors.invalid? 的用法<br />
p 181<br />
# product.rb<br />
validates_presence_of :title<br />
<br />
def test_invalid_with_empty+attributes<br />
&nbsp; product = Product.new<br />
&nbsp; assert !product.valid?<br />
&nbsp; <strong>assert product.errors.invalid?(:title)</strong><br />
end<br />
<br />
p190<br />
assert_match(pattern, string, <em>message</em>)<br />
assert_not_match(pattern, string, <em>message</em>)<br />
assert(/flower/i, user.town)<br />
<br />
p192<br />
仅测试,类中的一个方法<br />
ruby test/functional/login_controller_test.rb -n test_index<br />
<br />
p196<br />
xmlhttprequest 的测试支持<br />
xhr(:get, :add_to_cart, :id =&gt; 11)<br />
<br />
p198<br />
针对功能测试的辅助方法<br />
1. <br />
p198<br />
tag = find_tag :tag =&gt; &quot;form&quot;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :attributes =&gt; {:action =&gt; &quot;/store/add_to_cart/993&quot;}<br />
assert_equal &quot;post&quot;, tag.attributes[&quot;method&quot;]<br />
<br />
2.<br />
p199<br />
assert_select &quot;div#cart&quot; do<br />
&nbsp; assert_select &quot;table&quot; do<br />
&nbsp;&nbsp;&nbsp; assert_select &quot;tr&quot;, :count =&gt; 3<br />
&nbsp;&nbsp;&nbsp; assert_select &quot;tr.total-line td:last-of-type&quot;, &quot;$57.70&quot;<br />
&nbsp; end<br />
end<br />
<br />
3<br />
p200 简单选择器<br />
p201 选择器链<br />
<br />
4. <br />
集成测试<br />
ruby script\generate integration_test user_stories<br />
<br />
<br />
<br />
<br />
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/106955#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Mon, 30 Jul 2007 12:36:39 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/106955</link>
        <guid>http://agi-alvin.javaeye.com/blog/106955</guid>
      </item>
      <item>
        <title>读 Agile Web Development with Rails Second Edition 读书笔记 (三)</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/106952" style="color:red;">http://agi-alvin.javaeye.com/blog/106952</a>&nbsp;
          发表时间: 2007年07月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.类级的变量 及 form.select 中 prompt 的作用 及 validates_inclusion_of 的用法<br />
p 137<br />
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span>form.select&nbsp;</span><span class="symbol">:pay_type</span><span>,&nbsp;Order::PAYMENT_TYPES,&nbsp;</span><span class="symbol">:prompt</span><span>&nbsp;=&gt;&nbsp;</span><span class="string">&quot;select&nbsp;a&nbsp;payment&nbsp;method&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">class</span><span>&nbsp;Order&nbsp;&lt;&nbsp;ActiveRecord::Base&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;validates_inclusion_of&nbsp;<span class="symbol">:pay_type</span><span>,&nbsp;</span><span class="symbol">:in</span><span>&nbsp;=&gt;&nbsp;PAYMENT_TYPES.map&nbsp;{&nbsp;|&nbsp;disp,&nbsp;value|&nbsp;value}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;PAYMENT_TYPES&nbsp;=&nbsp;[&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">#&nbsp;Displayed&nbsp;&nbsp;&nbsp;stored&nbsp;in&nbsp;db</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;[<span class="string">&quot;Check&quot;</span><span>,&nbsp;</span><span class="string">&quot;check&quot;</span><span>],&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;[<span class="string">&quot;credit&nbsp;card&quot;</span><span>,&nbsp;</span><span class="string">&quot;cc&quot;</span><span>],&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;[<span class="string">&quot;purchase&nbsp;order&nbsp;&quot;</span><span>]&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;]&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
prompt&nbsp; 空的选择的提示<br />
<br />
<br />
2.保存未登录用户访问的 uri 在他登录后自动转向<br />
p 159<br />
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span>session[</span><span class="symbol">:original_uri</span><span>]&nbsp;=&nbsp;request.request_uri&nbsp;&nbsp;</span></span></li>
    <li class=""><span>uri&nbsp;=&nbsp;session[<span class="symbol">:original_uri</span><span>]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>session[<span class="symbol">:original_uri</span><span>]&nbsp;=&nbsp;</span><span class="keyword">nil</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>redirect_to(uri&nbsp;||&nbsp;{<span class="symbol">:action</span><span>&nbsp;=&gt;&nbsp;</span><span class="string">&quot;index&quot;</span><span>&nbsp;})&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
<br />
3.link_to 可以加 method =&gt; &quot;post&quot;<br />
<br />
4.删除的事务 这样做后可以自动回滚<br />
def after_destroy<br />
&nbsp; if User.count.zero?<br />
&nbsp;&nbsp;&nbsp; raise &quot;Can't delete last user.&quot;<br />
&nbsp; end<br />
end<br />
<br />
5. logger.info(&quot; ..info .. &quot;)<br />
<br />
6.use curl test REST<br />
&gt; curl -H &quot;Accept: application/xml&quot; http://localhost:3000/info/who_bought/1<br />
&gt; curl -H &quot;Accept: text/html&quot; http://localhost:3000/info/who_bought/1<br />
<br />
7.render :xml =&gt; @product.to_xml(:include =&gt; :orders)<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">product</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>new_product</span><span class="tag"><!--</span--><span class="tag-name">name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">orders</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">order</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>100</span><span class="tag"><!--</span--><span class="tag-name">id</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">price</span><span class="tag">&gt;</span><span>200</span><span class="tag"><!--</span--><span class="tag-name">price</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">order</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">order</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>101</span><span class="tag"><!--</span--><span class="tag-name">id</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">price</span><span class="tag">&gt;</span><span>202</span><span class="tag"><!--</span--><span class="tag-name">price</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">order</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="tag"><!--</span--><span class="tag-name">orders</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span><span class="tag"><!--</span--><span class="tag-name">product</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
</ol>
</div>
<product><orders><order><id><br />
&nbsp;&nbsp;&nbsp; </id><br />
<br />
8.<br />
# HTML 模式文档<br />
rake doc:app<br />
# code stats<br />
rake stats&nbsp; <br />
</order></orders> <br />
<br />
</product>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/106952#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jul 2007 12:10:23 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/106952</link>
        <guid>http://agi-alvin.javaeye.com/blog/106952</guid>
      </item>
      <item>
        <title> 读 Agile Web Development with Rails Second Edition 读书笔记 (二)</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/102799" style="color:red;">http://agi-alvin.javaeye.com/blog/102799</a>&nbsp;
          发表时间: 2007年07月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. button_to 在客户端生成表单 用于POST 提交 用法同 link_to<br />p 92<br /><pre name="code" class="java">button_to "Add to Cart", :action => add_to_cart %></pre><br /><br />2. 把session存进数据库<br />p 97<br /><br />1) rake db:sessions:create<br />2) rake db:migrate<br />3) <pre name="code" class="java">
# environment.rb
# 打开
config.action_controller.session_store = :active_record_store
</pre><br />4) rake db:sessions:clear<br />5) 尽量在 session 里存简单类型 如登录用记 存 user_id 比存user 好:<br />因为如果user 类改动 后者必须删除session 前者不用<br /><br />3. 添加日志<br />p 106<br /><pre name="code" class="java">logger.error("error info in log")</pre><br /><br />4. windows 的 tail 命令工具, <br />p 107<br />http://tailforwin32.sourceforge.net
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/102799#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Thu, 19 Jul 2007 13:51:26 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/102799</link>
        <guid>http://agi-alvin.javaeye.com/blog/102799</guid>
      </item>
      <item>
        <title>读 Agile Web Development with Rails Second Edition 读书笔记 (一)</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/102684" style="color:red;">http://agi-alvin.javaeye.com/blog/102684</a>&nbsp;
          发表时间: 2007年07月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.针对 decimal 字段的 Migration <br />p71<br /><pre name="code" class="java">add_column :products, :price, :decimal, :precision => 8, :scale => 2, :default => 0</pre><br /><br />2.很开的字符串可以用 %{..} 这样的符号<br />p 80 <br /><pre name="code" class="java">%{&lt;p>
This book..
get you up..
version..
up experiencing..
&lt;/p>}</pre><br /><br />3. cycle 的辅助方法来设置  奇数行和偶数行<br />p81<br /><br /><pre name="code" class="java">&lt;tr class="&lt;%= cycle('list-line-odd', 'list-line-even) %>"></pre><br /><br />4. truncate() 只显示 80 个字符 后面会自动加上 ...
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/102684#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Thu, 19 Jul 2007 09:17:30 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/102684</link>
        <guid>http://agi-alvin.javaeye.com/blog/102684</guid>
      </item>
      <item>
        <title>Time in Text Field</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/101526" style="color:red;">http://agi-alvin.javaeye.com/blog/101526</a>&nbsp;
          发表时间: 2007年07月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="CodeRay">http://railscasts.com/episodes/32<br />
<div class="code">
<div class="notes">
<div class="CodeRay">
<div class="code">
<pre><span class="c">&lt;!-- tasks/_form.rhtml --&gt;</span><br /><span class="il"><span class="dl">&lt;%=</span> f.text_field <span class="sy">:due_at</span> <span class="dl">%&gt;</span></span></pre>
</div>
</div>
<div class="CodeRay">
<div class="code">
<pre><span class="c"># models/task.rb</span><br /><span class="r">def</span> <span class="fu">due_at_string</span><br />  due_at.to_s(<span class="sy">:db</span>)<br /><span class="r">end</span><br /><br /><span class="r">def</span> <span class="fu">due_at_string=</span>(due_at_str)<br />  <span class="pc">self</span>.due_at = <span class="co">Time</span>.parse(due_at_str)<br /><span class="r">rescue</span> <span class="co">ArgumentError</span><br />  <span class="iv">@due_at_invalid</span> = <span class="pc">true</span><br /><span class="r">end</span><br /><br /><span class="r">def</span> <span class="fu">validate</span><br />  errors.add(<span class="sy">:due_at</span>, <span class="s"><span class="dl">&quot;</span><span class="k">is invalid</span><span class="dl">&quot;</span></span>) <span class="r">if</span> <span class="iv">@due_at_invalid</span><br /><span class="r">end</span></pre>
</div>
</div>
</div>
<pre><span class="r"><br /><br />&gt;&gt; DateTime.parse('03-Jul-2007 12:07 AM').to_s<br />=&gt; &quot;2007-07-03T00:07:00Z&quot;<br />&gt;&gt; DateTime.parse('03-Jul-2007 12:07 PM').to_s<br />=&gt; &quot;2007-07-03T12:07:00Z&quot;</span></pre>
</div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/101526#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Mon, 16 Jul 2007 11:27:02 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/101526</link>
        <guid>http://agi-alvin.javaeye.com/blog/101526</guid>
      </item>
      <item>
        <title>rails form helper select </title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/101505" style="color:red;">http://agi-alvin.javaeye.com/blog/101505</a>&nbsp;
          发表时间: 2007年07月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &lt;%= select :booking_note, :fee_invoice_send_address, User.find(session[:user_id]).fee_invoice_send_addresses.collect(&amp;:address), {}, {:class =&gt; &quot;ext_combobox&quot;} %&gt;<br />
<br />
&lt;%= select :booking_note, :shipper_attn_name, User.find(session[:user_id]).contact_people.collect {p| [ p.name, p.id ] }, {:include_blank =&gt; true}, {:id =&gt; &quot;booking_note_shipper_cb&quot;} %&gt;
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/101505#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Mon, 16 Jul 2007 10:26:00 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/101505</link>
        <guid>http://agi-alvin.javaeye.com/blog/101505</guid>
      </item>
      <item>
        <title>Customize Field Error</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/101292" style="color:red;">http://agi-alvin.javaeye.com/blog/101292</a>&nbsp;
          发表时间: 2007年07月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="notes">
<div class="CodeRay">
<div class="code">
<pre><span class="c"># environment.rb</span><br /><span class="co">ActionView</span>::<span class="co">Base</span>.field_error_proc = <span class="co">Proc</span>.new <span class="r">do</span> |html_tag, instance_tag|<br />  <span class="s"><span class="dl">&quot;</span><span class="k"><span class="field_error"></span><span class="il"><span class="idl">#{</span>html_tag<span class="idl">}</span></span><span class="k"></span></span><span class="dl">&quot;</span></span><br /><span class="r">end<br /><br /><br />Result:<br /><br /></span>  &lt;<span class="start-tag">p</span>&gt;<br />    &lt;<span class="start-tag">b</span>&gt;Mark<!--<span class="end-tag"-->b&gt;&lt;<span class="start-tag">br</span><span class="error"><span class="attribute-name"> /</span></span>&gt;<br />    &lt;<span class="start-tag">div</span><span class="attribute-name"> class</span>=<span class="attribute-value">&quot;fieldWithErrors&quot;</span>&gt;&lt;<span class="start-tag">input</span><span class="attribute-name"> id</span>=<span class="attribute-value">&quot;product_mark&quot; </span><span class="attribute-name">name</span>=<span class="attribute-value">&quot;product[mark]&quot; </span><span class="attribute-name">size</span>=<span class="attribute-value">&quot;30&quot; </span><span class="attribute-name">type</span>=<span class="attribute-value">&quot;text&quot; </span><span class="attribute-name">value</span>=<span class="attribute-value">&quot;&quot; </span><span class="error"><span class="attribute-name">/</span></span>&gt;<!--<span class="end-tag"-->div&gt;<br />  <!--<span class="end-tag"-->p&gt;<br /></pre>
</div>
</div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/101292#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Sun, 15 Jul 2007 15:43:57 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/101292</link>
        <guid>http://agi-alvin.javaeye.com/blog/101292</guid>
      </item>
      <item>
        <title>rails 文件上传</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/77580" style="color:red;">http://agi-alvin.javaeye.com/blog/77580</a>&nbsp;
          发表时间: 2007年05月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          注: 本片文章参考 redmine<br />
<br />
1.<br />
rails upload_file<br />
2.&nbsp; database.yml<br />
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<ol class="dp-rb" start="1">
    <li class="alt"><span><span>development:&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;adapter:&nbsp;sqlite3&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;dbfile:&nbsp;db/dev.db&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>test:&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;adapter:&nbsp;sqlite3&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;dbfile:&nbsp;db/test.db&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>production:&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;adapter:&nbsp;sqlite3&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;dbfile:&nbsp;db/prod.db&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
3.<br />
ruby script/generate model attachment filename:string disk_filename:string content_type:string created_on:datetime downloads:integer filesize:integer<br />
4.<br />
rake db:migrate<br />
5.<br />
ruby script\generate controller attachment show upload<br />
<br />
6.vi app\controllers\attachment_controller.rb<br />
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">class AttachmentController &lt; ApplicationController<br />
&nbsp; def show<br />
&nbsp; end<br />
<br />
&nbsp; def upload<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; end<br />
&nbsp; <br />
&nbsp; def create<br />
&nbsp;&nbsp;&nbsp; Attachment.create(:file =&gt; params[:file])<br />
&nbsp;&nbsp;&nbsp; redirect_to :action =&gt; &quot;show&quot;<br />
&nbsp; end<br />
&nbsp; <br />
&nbsp; def download<br />
&nbsp;&nbsp;&nbsp; @attachment = Attachment.find(params[:id])<br />
&nbsp;&nbsp;&nbsp; @attachment.increment_download<br />
<br />
&nbsp;&nbsp;&nbsp; send_file @attachment.diskfile, :filename =&gt; @attachment.filename<br />
&nbsp; end<br />
end<br />
<br />
<br />
</div>
</div>
7.vi app\views\attachment\show.rhtml<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">table</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">thead</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>Filename</span><span class="tag">&lt;/</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>Disk_filename</span><span class="tag">&lt;/</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>Content_type</span><span class="tag">&lt;/</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>Downloads</span><span class="tag">&lt;/</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>Filesize</span><span class="tag">&lt;/</span><span class="tag-name">th</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">thead</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">tbody</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span>%&nbsp;Attachment.find(:all).each&nbsp;do&nbsp;|a|&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">tr</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">href</span><span>=</span><span class="attribute-value">&quot;/attachment/download/&lt;%=&nbsp;a.id%&gt;&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span>%=&nbsp;a.filename&nbsp;%</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">a</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span>%=&nbsp;a.disk_filename%</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span>%=&nbsp;a.content_type%</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span>%=&nbsp;a.downloads%</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span>%=&nbsp;a.filesize%</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">tr</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span>%&nbsp;end&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">tbody</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;/</span><span class="tag-name">table</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">hr</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">href</span><span>=/attachment/upload</span><span class="tag">&gt;</span><span>upload</span><span class="tag">&lt;/</span><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
8.vi app\views\attachment\upload.rhtml
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">form</span><span>&nbsp;</span><span class="attribute">action</span><span>=</span><span class="attribute-value">&quot;/attachment/create/1&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;tabular&quot;</span><span>&nbsp;</span><span class="attribute">enctype</span><span>=</span><span class="attribute-value">&quot;multipart/form-data&quot;</span><span>&nbsp;</span><span class="attribute">method</span><span>=</span><span class="attribute-value">&quot;post&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;file&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;file&quot;</span><span>&nbsp;</span><span class="attribute">size</span><span>=</span><span class="attribute-value">&quot;30&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;file&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;commit&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;submit&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;Create&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag"><!--</span--><span class="tag-name">form</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
</ol>
</div>
9.vi app\models\attachment.rb<br />
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span class="keyword">class</span><span>&nbsp;Attachment&nbsp;&lt;&nbsp;ActiveRecord::Base&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;validates_presence_of&nbsp;<span class="symbol">:filename</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;cattr_accessor&nbsp;<span class="symbol">:storage_path</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;@<span class="variable">@storage_path</span><span>&nbsp;=&nbsp;</span><span class="string">&quot;#{RAILS_ROOT}/files&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;validate&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;errors.add_to_base&nbsp;<span class="symbol">:too_long</span><span>&nbsp;</span><span class="keyword">if</span><span>&nbsp;</span><span class="keyword">self</span><span>.filesize&nbsp;&gt;&nbsp;5140.kilobytes&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;file=(incomming_file)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">unless</span><span>&nbsp;incomming_file.</span><span class="keyword">nil</span><span>?&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="variable">@temp_file</span><span>&nbsp;=&nbsp;incomming_file&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;</span><span class="variable">@temp_file</span><span>.size&nbsp;&gt;&nbsp;0&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">self</span><span>.filename&nbsp;=&nbsp;sanitize_filename(</span><span class="variable">@temp_file</span><span>.original_filename)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">self</span><span>.disk_filename&nbsp;=&nbsp;DateTime.now.strftime(</span><span class="string">&quot;%y%m%d%H%M%S&quot;</span><span>)&nbsp;+&nbsp;</span><span class="string">&quot;_&quot;</span><span>&nbsp;+&nbsp;</span><span class="keyword">self</span><span>.filename&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">self</span><span>.content_type&nbsp;=&nbsp;</span><span class="variable">@temp_file</span><span>.content_type&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">self</span><span>.filesize&nbsp;=&nbsp;</span><span class="variable">@temp_file</span><span>.size&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;file&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">nil</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;before_save&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;</span><span class="variable">@temp_file</span><span>&nbsp;&amp;&amp;&nbsp;(</span><span class="variable">@temp_file</span><span>.size&nbsp;&gt;&nbsp;0)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(<span class="string">&quot;saving&nbsp;'#{self.diskfile}'&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="builtin">File</span><span>.open(diskfile,&nbsp;</span><span class="string">&quot;wb&quot;</span><span>)&nbsp;</span><span class="keyword">do</span><span>&nbsp;</span><span class="variable">|f</span><span>|&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.write(<span class="variable">@temp_file</span><span>.read)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;after_destroy&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;</span><span class="keyword">self</span><span>.filename?&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="builtin">File</span><span>.delete(diskfile)&nbsp;</span><span class="keyword">if</span><span>&nbsp;</span><span class="builtin">File</span><span>.exist?(diskfile)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">#&nbsp;Returns&nbsp;file's&nbsp;location&nbsp;on&nbsp;disk</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;diskfile&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;#{@@storage_path}/#{self.disk_filename}&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;increment_download&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;increment!(<span class="symbol">:downloads</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;</span><span class="keyword">self</span><span>.most_downloaded&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find(<span class="symbol">:all</span><span>,&nbsp;</span><span class="symbol">:limit</span><span>&nbsp;=&gt;&nbsp;5,&nbsp;</span><span class="symbol">:order</span><span>&nbsp;=&gt;&nbsp;</span><span class="string">&quot;downloads&nbsp;DESC&quot;</span><span>)&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp; private&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">def</span><span>&nbsp;sanitize_filename(value)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;just_filename&nbsp;=&nbsp;value.gsub(/^.*(\\|\/)/,&nbsp;<span class="string">''</span><span>)&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="variable">@filename</span><span>&nbsp;=&nbsp;just_filename.gsub(/[^\w\.\-]/,'_')&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
10.<br />
在根目录创建文件夹 files
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/77580#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 07 May 2007 21:21:55 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/77580</link>
        <guid>http://agi-alvin.javaeye.com/blog/77580</guid>
      </item>
      <item>
        <title>Ruby Http Client</title>
        <author>open2ye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agi-alvin.javaeye.com">open2ye</a>&nbsp;
          链接：<a href="http://agi-alvin.javaeye.com/blog/70230" style="color:red;">http://agi-alvin.javaeye.com/blog/70230</a>&nbsp;
          发表时间: 2007年04月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span>require&nbsp;'net/http'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>Net::HTTP.start('open2ye.javaeye.com',&nbsp;80)&nbsp;<span class="keyword">do</span><span>&nbsp;</span><span class="variable">|http</span><span>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;response&nbsp;=&nbsp;http.get('/')&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">#Do&nbsp;something&nbsp;with&nbsp;the&nbsp;response.&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;puts&nbsp;<span class="string">&quot;Code:&nbsp;#{response.code}&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;puts&nbsp;<span class="string">&quot;Message:&nbsp;#{response.message}&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;puts&nbsp;<span class="string">&quot;Body:\n&nbsp;#{response.body}&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">end</span><span>&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://agi-alvin.javaeye.com/blog/70230#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 12 Apr 2007 10:21:23 +0800</pubDate>
        <link>http://agi-alvin.javaeye.com/blog/70230</link>
        <guid>http://agi-alvin.javaeye.com/blog/70230</guid>
      </item>
  </channel>
</rss>