Archive for April, 2008

rails page cache with subdomain

Wednesday, April 23rd, 2008

ruby on rails在默认情况下对于同一个应用的多个域名的page cache是不能区分目录的..对于一些应用来说会有些麻烦,比如多用户blog系统,或是cms系统的不同频道指定不同二级域名(如:http://finance.sina.com.cn)的时候,index页面是无法正常工作的(写到这里突然想起来应该先去看看typo,Mephisto等系统的实现)..对于这个问题郁闷了很久…其实解决办法也很简单..就是对于不同的二级域名的page cache的文件保存到不同目录,然后通过web服务器提供的url rewrite功能来重写请求.(对于非二级域名的多域名应用的情况下,只要指定整个域名为cache目录也可以解决.)
e.g:
http://wap.upulife.com => /public/wap/index.html
http://finance.upulife.com => /public/finance/index.html
代码:

#实现subdomain page cache功能.
module ActionController::Caching::Pages
def cache_page(content = nil, options = {})
return unless perform_caching && caching_allowed
subdomain = ‘’
#TODO: 需要确认 .com.cn 等域名(3段)不加www的情况下是不是 request.subdomains.first.blank?
#顶级域名不写子目录,??? rewrite rule如何写呢?
unless request.subdomains.first.blank? […]

git

Monday, April 14th, 2008

虽然git最近在rails社区被人说的耳朵长老茧了。。虽然我只是初入门,只是把git用在一个java项目上,但是我还是要说说,因为这玩意实在是太tmd好用了。。。
从参加工作开始,我经历了,每周末我收集项目成员更新的文件,合并升级(那个项目每周对在用系统进行升级),到vss ,cvs, svn,每一次的改变都然我感到非常兴奋,但是每一次的修改和提交我都需要小心翼翼,生怕做错什么。。如果网络不通或是速度太慢都会让我抓狂。。
用了git后,这些问题都不再是问题。。本地版本库,更小的负担(存储占用),快捷的分支和Tag,真是让人兴奋的东西。。即使你无法说服scm从svn转到git,但是你仍然可以试一试 git-svn,自己使用git来管理代码,再提交到svn中。试一试吧。。只要你受过压迫,只要你对现状不满,只要你不是非常讨厌命令行那么你一定会喜欢上它的。

ruby on rails 3周年。。

Tuesday, April 1st, 2008

前些天装个主机,整理旧服务器的时候发现最早的那个rails应用是2005.04部署的,rails是0.13.1的版本(记得开发的的时候用0.9x的)刚好3年了,总结一下(首先请允许我先感叹一下:啊!时光如水 ……)
3年过去了,发现这方面的技能没都没怎么提高,一方面是因为自己懒,另一方面因为我是个实用主义者,够用就好,不够用的时候再学了。
回过头来发现一个成功的应用都没有留下。。。(太浮躁了)
第一个让应用是一个书签,看着Peter Cooper(现在rubyinside的作者)的snippets(现在的dzone snippets)程序模仿blogmakrks.net做的网络书签功能,实现了网页截屏、tag之类的功能。没有推广,几个月之后因为服务器调整就关闭了。
第二个应用也是我自己开发的应用中最成功的一个,这是一个资源型的应用,跑在一台hp的主机上至强处理器1G内存。记得当时的网络流量一天超过100G,apache+mod_fcgi部署,不过随着流量增大的时候,经常报错导致fastcgi进程不能处理请求(具体什么错误忘记了)后来改成scgi(国人开发的一个fastcgi模块)的方式,情况好的很多,不过还是有些问题。后来这个网站也关了..
后来的应用添加了一台主机,部署在lighttpd1.4+fastcgi上了,805D,2G内存。最初的时候也跑的很好,慢慢的lighttpd进程老是退出,改到lighttpd1.5还是不能解决,切回1.4,自己写了个监控进程的script,退出的时候自动重启。。
新上的主机用nginx+mongrel_cluster,不为别的就是为了cms+ssi的方式跑的更好,这个稳定性还没有测试出来,主要是现在网站还没大流量,还有就是页面都ssi静态化了。
rails2.0去年底出来了,但是现在我还是工作在1.2上面,以前的所有应用都还跑在1.1或是1.2上,不是因为我拒绝改变或是懒得学习(有一点啦)而是我们认为任何没有经过时间验证的系统都是具有很大风险性的。我看到很多人说自己在产品环境中working on the edge还引以为荣,觉的很不可思议,当然这个受以前的工作环境影响了。像之前oracle出9i的时候我们还在用8i,出10G的时候我们才开始用9i,一方面是因为成本,更主要的是为了避规风险。只有业界广泛的使用和时间的证明才能说明它是强壮的。(ubuntu出8.04了,装服务器的时候我们还是选择了6.06LTS)
对于rest我始终保持观望态度,虽然开发几个测试程序,不过还是没理解精髓,可能不是所有应用都适合rest的吧。
rails只是一个框架现在有更多的ruby开发的web 框架出来了,3年只是一起起点,后面的路还很长。
ps: 最近半年由于项目原因工作中都是用java。。。之前好像说过java是我最讨厌的语言。呵呵。。
不过倒是对于javascript产生了极大的兴趣,这主要归功与jquery了。
好久没写了。。流水账。。。最近打拼音又觉得很烦了。。老是错别字。。。郁闷。