<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Ruby论坛最新讨论 - JavaEye</title>
    <description>Ruby编程、Ruby DSL、Ruby On Rails <br/>
圈子: 
<a href="http://rubyemb.group.javaeye.com" target="_blank">Ruby嵌入式</a>
<a href="http://jruby.group.javaeye.com" target="_blank">JRuby</a>
<a href="http://ror-party.group.javaeye.com" target="_blank">RoR北京活动小组</a>
<a href="http://shanghaionrails.group.javaeye.com" target="_blank">RoR上海活动小组</a> - 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>关于rails render的优化……</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gaoxt1983.javaeye.com">刑天战士</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252051" style="color:red;">http://www.javaeye.com/topic/252051</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这几天访问量激增，服务器CPU 100%，响应时间有时候能到半分钟才respond，查看日志发现rendering占了大部分时间,而mysql的机器自身的CPU使用量平均还不到50%。进一步分析发现render慢分两种情况，一种是由于mysql返回了大量的结果，导致了对象装配很慢；另外一种是生成html很慢，把CPU全耗光了。第一种已经得到优化，初见成效。但是第二种怎么优化？
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252051" style="color:red;">已有 <strong>14</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 13 Oct 2008 11:11:00 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252051</link>
        <guid>http://www.javaeye.com/topic/252051</guid>
      </item>
          <item>
        <title>教给你在bat里面写ruby代码(附带同步时间的脚本示例)</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dazuiba.javaeye.com">dazuiba</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251987" style="color:red;">http://www.javaeye.com/topic/251987</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在windows bat文件中写ruby代码，得解决两个问题：<br />1 windows的bat解析器跳过ruby代码。<br />2 ruby解析器跳过bat代码<br /><br /><br />那么bat脚本的样子应该是这样子：<br /><br />"ruby" -x "%~f0" %*<br />goto endofruby<br />#!/bin/ruby<br />#ruby -x will skip text before !ruby<br />p "sdf"<br />__END__<br />:endofruby<br /><br />附赠一个时间同步的例子:sync_time.bat<br /><pre name="code" class="ruby">@echo off
"ruby" -x "%~f0" %*
goto endofruby
#!/bin/ruby
#ruby -x will skip text before !ruby
def sync_time
	time=get_time_bjtime()
end
def get_time_bjtime
  require 'open-uri'
	p 'geting from bjtime...'
	time_string=open('http://bjtime.cn/header3.asp').string.gsub(/\r|\n| /,"")
	time_string=~/nyear=(\d+).*nmonth=(\d+).*nday=(\d+).*nhrs=(\d+).*nmin=(\d+).*nsec=(\d+).*/
	y,mon,d,h,min,s=$1,$2,$3,$4,$5,$6
	p time_string
	p "got #{y}-#{mon}-#{d} #{h}:#{min}:#{s}"
  system("date #{y}-#{mon}-#{d}")
	system("time #{h}:#{min}:#{s}")
end
if __FILE__ == $0
  sync_time
end
__END__
:endofruby</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251987" style="color:red;">已有 <strong>5</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 00:43:51 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251987</link>
        <guid>http://www.javaeye.com/topic/251987</guid>
      </item>
          <item>
        <title>一个把紫光输入法的词库格式变为谷歌词库格式的ruby程序</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://malijun.javaeye.com">sea gull</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251678" style="color:red;">http://www.javaeye.com/topic/251678</a>&nbsp;
          发表时间: 2008年10月11日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="ruby">outfile = File.new(&quot;out.txt&quot;,&quot;w&quot;)
	File.open(gets.chomp) do |file|
		file.each_line do |line|
			a,b,c=line.chomp.split(/\t/)
			outfile.write a+&quot; &quot;+c+&quot; &quot;+b+&quot;\n&quot;
		end
	end
outfile.close
</pre>
&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251678" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 11 Oct 2008 20:52:05 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251678</link>
        <guid>http://www.javaeye.com/topic/251678</guid>
      </item>
          <item>
        <title>写了个工具有人愿意测试吗？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wosmvp.javaeye.com">wosmvp</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251591" style="color:red;">http://www.javaeye.com/topic/251591</a>&nbsp;
          发表时间: 2008年10月11日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          ==特点，功能：<br />类似<br />cheat (http://errtheblog.com/posts/21-cheat)<br />chit (http://www.robinlu.com/blog/archives/199)<br />但更强 :)&nbsp; 具体的功能也不详细列出了……大家参看上面的文章就行,目的差不多<br /><br />== 安装方式：<br />需要安装 git ruby rubygem<br />然后通过<br />(sudo) gem install yac 就可以安装该软件<br /><br />如果有人感觉不错,并且想自己编辑cheat sheet的话,恰好还使用VIM，<br />请参见我给 该工具写的 vim的高亮插件<br />http://www.vim.org/scripts/script.php?script_id=2399<br />并且在vimrc文件中加入<br />augroup filetypedetect<br />au! BufNewFile,BufRead *.ch setf cheat<br />augroup END<br /><br />谢谢大家测试并提出意见，功能建议<br /><br />使用方法：<br />=== 初始化一个仓库:<br />&nbsp;&nbsp;&nbsp; $ yac init<br />=== 得到cheat表:<br />&nbsp;&nbsp;&nbsp; $ yac [cheatsheet]<br />=== 修改一个cheat表<br />&nbsp;&nbsp;&nbsp; $ yac edit [cheatsheet]<br />=== 加入一个cheat表<br />&nbsp;&nbsp;&nbsp; $ yac add [cheatsheet]<br />=== 删除一个cheat表<br />&nbsp;&nbsp;&nbsp; $ yac rm [cheatsheet]<br />=== 按照cheat表的文件名搜索<br />&nbsp;&nbsp;&nbsp; $ yac name [keyword]<br />=== 按照cheat表的内容搜索<br />&nbsp;&nbsp;&nbsp; $ yac content [keyword]<br />=== 更新git仓库<br />&nbsp;&nbsp;&nbsp; $ yac update main 更新主仓库<br />&nbsp;&nbsp;&nbsp; $ yac update private 更新个人仓库<br />&nbsp;&nbsp;&nbsp; $ yac update 全部更新<br />=== 帮助<br />&nbsp;&nbsp;&nbsp; $ yac help<br />=== 打开仓库shell<br />&nbsp;&nbsp;&nbsp; $ yac shell main 打开主仓库的shell<br />&nbsp;&nbsp;&nbsp; $ yac shell 打开个人仓库的shell<br />=== 文档格式<br />&nbsp; 使用.ch后缀,在行首加一个=为一级标题，加N个=为N级标题,不同级别标题可以加入不同颜色高亮<br />&nbsp; 在行首加入#将忽略该行,使用 '\#'可以得到 '#'的效果<br />&nbsp; 在某词两端加入三个@，例:@@\@ HI @@\@(去掉两个/)将会高亮 HI<br />=== 设置高亮的颜色<br />&nbsp; 默认用主目录下的 .yacrc来设置，详细内容，参见 resources目录 yacrc文件<br />=== 其它<br />&nbsp; 在 表名/关键词 前加入@将会只搜索主仓库<br />&nbsp; 更多性感使用方法,参见源码<img src="/images/smiles/icon_smile.gif"/>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251591" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 11 Oct 2008 13:15:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251591</link>
        <guid>http://www.javaeye.com/topic/251591</guid>
      </item>
          <item>
        <title>ruby处理中文URL的办法</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://meatloaf.javaeye.com">meatloaf</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250355" style="color:red;">http://www.javaeye.com/topic/250355</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有些工具，比如浏览器在保存html页面的时候会把其中的中文路径名转化为$#12345的这种形式，这实际上是中文字符的编码点(codepoint)，一般浏览器都能够自动的处理进行转化，不看Html代码，你根本不知道存在这种转化。<br />但我目前有个需求，需要进行html的解析，并且要和本地目录进行比较，因此就需要在ruby中把这种使用编码点的url字符串转化为字符。<br />比如下面这个url<br /><pre name="code" class="java">
src="./&amp;#20912;&amp;#37239;&amp;#19968;&amp;#22799;.files/gif-0268.gif"
</pre><br />一开始，考虑用unpack来做<br /><pre name="code" class="java">
str = path.gsub(/&amp;#(\d+);/) { |s| [$1.to_i(16)].pack("U") } 
puts str
</pre><br />控制台的编码方式是gbk，这时输出是乱码，尝试进行转码<br /><pre name="code" class="java">
path = "./&amp;#20912;&amp;#37239;&amp;#19968;&amp;#22799;.files/gif-0268.gif"
str = path.gsub(/&amp;#(\d+);/) { |s| [$1.to_i(16)].pack("U") }
puts str
require "iconv"
puts Iconv.conv("gbk", "utf-8", str)
</pre><br />没想到输出是一样的<br /><pre name="code" class="java">
./馉鸱埞饳エ稷灆.files/gif-0268.gif
./馉鸱埞饳エ稷灆.files/gif-0268.gif
</pre><br />忽然想到java里面的做法<br /><pre name="code" class="java">
//str是通过正则表达式取出的数字，这样做是可以的
(char)Integer.valueof(str).intValue()
</pre><br />但是ruby并不支持unicode的编码点，因此ruby中int类型的to_char方法最大到256，这样也行不通。<br />于是想到用jruby来绕过这个转换的过程<br /><pre name="code" class="java">
    i = Ja::Integer.new(number)
    c = Ja::Character.new(i.intValue())
    Ja::String.valueOf(c)   
</pre><br />这个代码是可以运行的了。<br /><br />又过了好几天，忽然又想到问题可能是处在对编码点的理解上，一开始用的是16进制，应该使用十进制的，于是又试了一下，问题解决了<br /><pre name="code" class="java">
str = path.gsub(/&amp;#(\d+);/) { |s| [$1.to_i(10)].pack("U") }
puts str
require "iconv"
puts Iconv.conv("gbk", "utf-8", str)
</pre><br />其实，一开始就应该想到这个url是用十进制表示的编码点的，惯性思维，一看到编码点就直接用16进制了，这是个教训，呵呵。<br /><br />今天把这点经验放上来，希望能帮到同样也在做这个事情的朋友。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250355" style="color:red;">已有 <strong>11</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Oct 2008 15:59:01 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250355</link>
        <guid>http://www.javaeye.com/topic/250355</guid>
      </item>
          <item>
        <title>关于 rails 的扔remote_ip</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sina2009.javaeye.com">sina2009</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251180" style="color:red;">http://www.javaeye.com/topic/251180</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          局域网里有一台机器采用apache + mongerl代理群部署<br /><br />但在采集用户的IP里,我们采用request.remote_ip全是本机ip127.0.0.1<br /><br />使用request.env("REMOTE_ADDR")也不行,有没有其它的朋友有类似的问题,有啥解决方案.
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251180" style="color:red;">已有 <strong>5</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Fri, 10 Oct 2008 12:16:52 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251180</link>
        <guid>http://www.javaeye.com/topic/251180</guid>
      </item>
          <item>
        <title>山寨了一个配合acts_as_ferret使用的will_paginate分页</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251038" style="color:red;">http://www.javaeye.com/topic/251038</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Rails项目中用上了Ferret分布，全文检索后，发现will_paginate的分页用不上了，于是google ，再配合实际情况，山寨了一个适合自己的版本。<br />参考了这篇文章：<a href="http://opensoul.org/2007/8/17/acts_as_ferret-will_paginate" target="_blank">http://opensoul.org/2007/8/17/acts_as_ferret-will_paginate</a><br /><br />model<br /><br /><br /><pre name="code" class="java">
#全文检索方法
  def self.full_text_search(q, options = {})  
    return nil if q.nil? or q==""  
    default_options = {:limit => 10, :page => 1}  
    options = default_options.merge options  
    
    # get the offset based on what page we're on  
    options[:offset] = options[:limit] * (options.delete(:page).to_i-1)  
    results = Page.find_by_contents(q, options)     
  end
</pre><br /><br />戏肉来了，在application.rb写了一个公用的分页<br /><pre name="code" class="java">
#全文检索分页方法
  def pages_for(result,options = {})  
    page, per_page, total = (options[:page] || 1),(options[:per_page] || 30),(result.total_hits || 0)
    page_total = page * per_page
    index = (page.to_i - 1) * per_page
    pager = WillPaginate::Collection.new(page, per_page, page_total)
    returning WillPaginate::Collection.new(page, per_page, total) do |pager|
      pager.replace result[index,per_page]
    end
  end
</pre><br /><br />在controller中如下使用<br /><pre name="code" class="java">
results = Page.full_text_search @q
@pages = pages_for(results,:page => 1)
</pre><br /><br />当然山寨的东西，质量不敢保证，不过不用担心，会有售后服务的，只是先写下这个思路和初步的实现（怕忘记了），以后继续使用，会慢慢地完善。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251038" style="color:red;">已有 <strong>4</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Fri, 10 Oct 2008 00:44:58 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251038</link>
        <guid>http://www.javaeye.com/topic/251038</guid>
      </item>
          <item>
        <title>关于rails的权限控制</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sina2009.javaeye.com">sina2009</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251092" style="color:red;">http://www.javaeye.com/topic/251092</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在我们的系统采用的是将每一个控制器与action都记录在数据库中(新增加了控制器使用脚本自动加入)<br /><br />于是呢,每一个action相当于一个功能,再与相关的角色关联<br /><br /><br />优点我感觉是控制的比较细,且提供一个界面用来进行维护也方便,<br /><br />但我感觉还是有点麻烦,不知道有没有相关的更优秀的插件
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251092" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 09:53:44 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251092</link>
        <guid>http://www.javaeye.com/topic/251092</guid>
      </item>
          <item>
        <title>有没有好的AR的代替产品(持续层)</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sina2009.javaeye.com">sina2009</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251088" style="color:red;">http://www.javaeye.com/topic/251088</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在的项目中有很多表的内容是很少变的,比如有的表的内容就只有二到三行,<br />status: 正常,异常<br />type:新增,调整,修复<br /><br />这些表如果用AR来实现,我感觉最大的开销是数据库的查询问题(当然:include => 可以解决一些问题)<br /><br /><br />我后来想了一些替代方法:<br /><br />就是把相关数据放在status.yml中,<br /><br />然后在model下生成类模拟相关的方法 <br /><pre name="code" class="java">
class Status
 def self.all
  read some data from yml
 end
end
</pre><br /><br />但连接的问题又不知道如何解决了<br /><br />我想有没有更简单的解决方案呢.&nbsp;&nbsp;&nbsp; 或者不行的了就用AR算了
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251088" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Fri, 10 Oct 2008 09:46:37 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251088</link>
        <guid>http://www.javaeye.com/topic/251088</guid>
      </item>
          <item>
        <title>Ruby中的迭代器实现。</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://superxielei.javaeye.com">superxielei</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250983" style="color:red;">http://www.javaeye.com/topic/250983</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          记得刚接触ruby的时候被可爱的each深深吸引，也有让人看不懂的<br /><pre name="code" class="ruby">
show("Ruby") |value| do puts "value is " + value end
</pre><br />深入了解以后终于发现了其中的秘密，今天有空整理出来。<br /><br />其实这些都是ruby中的“块”所实现的。<br />块可以看成是由代码组合成的变量（是不是有点像函数？），我们可以在调用方法的传递一个块做参数，而方法内调用这个块就实现了上边的两种应用。<br /><br />定义块可以使用<br /><pre name="code" class="ruby">
{
  ....
}
</pre><br />或者<br /><pre name="code" class="ruby">
do 
  ....
end
</pre><br /><br />然后在方法中使用yield调用就可以啦。<br /><br />来个小例子，先来看看定义的方法<br /><pre name="code" class="ruby">
def show
  yield
end
</pre><br />够简单吧，只有已经yield，有了他我们就可以传递一个块做参数给show方法，show方法就是调用执行我们传递的块。<br /><pre name="code" class="ruby">
show do
  puts "我们定义的块" 
end
</pre><br />运行来看看。没有意外屏幕就应该显示&nbsp; "我们定义的块"<br />如果看不明白可以这样看看<br /><pre name="code" class="ruby">
show (do puts "我们定义的块" end)
#就是个参数，不过参数是个使用块语法定义的块。不过要注意可不能这么写，不能执行的~呵呵！真的想写一行就去掉括号吧。
show do puts "我们定义的块" end
</pre><br />基本的块的应用就是这么简单，来点深的，加上点参数。<br />还是来看看方法<br /><pre name="code" class="ruby">
def show name
  yield name
end
</pre><br />多了一个参数而已，没难度。下面传递块。<br /><pre name="code" class="ruby">
show "SuperXieLei" do |value|
  puts "我的名字是："  + value
end
</pre><br />太简单了。还可以传递多个参数。不写了，和其他的方法差不多。参数不足的时候就是nil，参数多了就是数组。<br /><br />灵活的使用块可以很方便的让我们编写代码。下边这个是由一本书上改编而来的，书名就不说了避免广告嫌疑。<br /><pre name="code" class="ruby">
class Apple
  def initialize name,color,weight,&amp;action
    @name = name
    @color = color
    @weight = weight
    @action = action
  end

  def show
    @action ? ( @action.call :name,@name) : (yield :name,@name)
    @action ? ( @action.call :color,@color) : (yield :color,@color)
    @action ? ( @action.call :weight,@weight) : (yield :weight,@weight)
  end
end

apple = Apple.new "红苹果","红色","0.4" do |name,value|
  puts "使用原始块执行--" + name.to_s + "变量值是：" + value.to_s
end
apple.show do |name,value| 
  puts "使用新定义块执行--" + name.to_s + "变量值是：" + value.to_s
end

apple1 = Apple.new "绿苹果","绿色","0.8"
apple1.show do |name,value| 
  puts "使用新定义块执行--" + name.to_s + "变量值是：" + value.to_s
end
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250983" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 22:23:02 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250983</link>
        <guid>http://www.javaeye.com/topic/250983</guid>
      </item>
          <item>
        <title>YAML 有序输出的问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wosmvp.javaeye.com">wosmvp</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250454" style="color:red;">http://www.javaeye.com/topic/250454</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          name.yml文件内容为<br /><pre name="code" class="java">
name1:
  1
name2:
  2
age1:
  a1
age2:
  a2
</pre><br /><br />但是通过YAML.load_file("name.yml")后再输出，顺序改变了<br />例如变成：<pre name="code" class="java">{"age1"=>"a1", "age2"=>"a2", "name1"=>1, "name2"=>2}</pre><br /><br />那么如何实现YAML文件的有序输出呢？
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250454" style="color:red;">已有 <strong>4</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 08 Oct 2008 18:38:07 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250454</link>
        <guid>http://www.javaeye.com/topic/250454</guid>
      </item>
          <item>
        <title>用上了liuqiang大侠分享的Rails在线编辑器，太cools了</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250113" style="color:red;">http://www.javaeye.com/topic/250113</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用上了liuqiang大侠分享的Rails在线编辑器，太cools了<br /><br />特撰此文，赞一下。<br /><br />地址：<a href="http://www.javaeye.com/topic/213151" target="_blank">http://www.javaeye.com/topic/213151</a>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250113" style="color:red;">已有 <strong>12</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Oct 2008 00:03:47 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250113</link>
        <guid>http://www.javaeye.com/topic/250113</guid>
      </item>
          <item>
        <title>一个关于 alias_method_chain 的问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bujiande.javaeye.com">不见得</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/249594" style="color:red;">http://www.javaeye.com/topic/249594</a>&nbsp;
          发表时间: 2008年10月06日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>alias_method_chain 真是个好东西呀， 真是杀人于无形，AOP于无声 ：）<br /><br />用它hack各种插件真是好用呀 ， 不过碰到一个问题 ， 还是上代码吧 ，</p>
<p>&nbsp;</p>
<p>在 hack attachment_fu 的时候的问题：</p>
<p>&nbsp;</p>
<pre name="code" class="ruby">Technoweenie::AttachmentFu::InstanceMethods.module_eval do
    
    def image_with_need_convert(content_type)
        if self.class.video?(content_type)
            write_attribute :need_convert , true
        end
        image_without_need_convert
    end
    
    alias_method_chain :image?, :need_convert
    
end</pre>
<p>&nbsp;</p>
<p>attachment_fu&nbsp; 的InstanceMethods 有个&nbsp; <span style="color: #ff0000;">image?</span> 的方法 ， 注意这个方法带<span style="color: #ff0000;">问</span>号呀！</p>
<p>&nbsp;</p>
<p>那个 with/without 方法怎么写呢 ？ 我有限的大脑已经解决不了了 ， 那位大侠给支个招呢？</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/249594" style="color:red;">已有 <strong>4</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 06 Oct 2008 23:07:41 +0800</pubDate>
        <link>http://www.javaeye.com/topic/249594</link>
        <guid>http://www.javaeye.com/topic/249594</guid>
      </item>
      </channel>
</rss>