Archive for 四月, 2008
Agile Web Development with Rails第三版(beta)发布
记得自己去年做Rails项目的时候,Rubyonrails的版本还是1.1.8。不到一年的时间RubyonRails已经更新和好几次。如此快速的更新说明这个项目有旺盛的生命力,但也给使用他的人带来很多困惑。比如我自己,当然希望永远都做Rails的项目。但在这个”对于IT技术人员,技术没那么重要”的世界里,不得不向现实低头。于是我离开了Rails半年多的时间。 等我回来的时候发现这个世界(Rails世界)已经不是我熟悉的了。原来的推荐用法,系统结构完全不一样了。REST变成了核心,Mysql也不是默认推荐数据库,核心代码的版本控制系统改成了Git。
当我拿起Rails想做一些东西的时候,发现自己仿佛又变成了一个新手。在Java世界里从来没有这种感觉。但这并没有打消我对Rails的喜爱。总想找一写比较详尽的介绍RubyonRails的资料,好好补补。但一直没找到太系统的,最近自己在纳闷为什么『Agile Web Development with Rails』这么好的书不更新了呢?
也是作者们听到了我的心声(不可能的事儿),今天无意间发现『Agile Web Development with Rails』第三版的Beta版本已经可以购买了。好事儿啊!
顺便说一句,pragprog改版以后的风格我很喜欢!
如何用Git为Rubyonrails提交修改
最近,Git非常的”火”,很大原因是Rubyonrails改用Git作为版本控制系统了。关于是什么Git及如何使用在这里我就不介绍了。总之理解了它的理念以后,使用上甚至比SVN简单。
下面是我翻译的一篇文章,关于为用GitRubyonrails做贡献的最佳实践。现在,因为自己业余时间里正用Rails写一些东西,期间似乎发现了一个Rails不大不小的Bug,想试着自己改改,然后提交上去。苦于不知道具体如何为开源项目提交代码,因此找到这篇文章翻译过来, 留作参考!
———————————————————-
Ruby on Rails现在使用Git了。这对于像我这样的Git迷来说是好消息。对于那些稍微晚一些参加进来为Rails做贡献的核心贡献者们,我特意为你们写了一个简单的技巧列表。虽然这不能替代使用Git为Rails做贡献的完全教程,但也许是个小小的补充。
首先,你应该设置一个真实的名字和email,默认情况下,Git基于你的登录信息和主机名(这几乎可以确定是个错误)选择一个由GECOS data产生的默认用户名和email(这倒是完全正确的)。这里,最佳实践要求你使用真实的名字和email,而不是你的登录信息或IRC,或者其他你拥有其他别名什么的。这些字段将永久的保存在版本历史记录里面,所以要确定你写的正确。
$ git config –global user.name "Tim Pope"
$ git config –global user.email "foo@gmail.com"
设置的同时,有可能你也想为命令加上颜色:
$ git config –global color.diff auto
$ git config –global color.status auto
$ git config –global color.branch auto
$ git config –global color.interactive auto
虽然Git允许你提交任何注释。但是,坚持用最佳实践去写log会让事情变得更简单。下面是一个提交Model的注释:
尽量简短的描述你的修改(50个字符或更少)
如果有必要,越具体的描述越好。每一行大约72个字符左右。在许多情况下,第一行作为email的标题,余下的部分是正文。尽量不要在总结里加入空行(除非是省略整个正文的情况)。像rebase这样的工具可能造成混乱,如果你运行它两次。
- 更多的段落要跟在一些空行以后,或者用提示符(bullet point)。
- 一般情况下用短横线或星号,后面跟一个空格。段落之间用几个空行,或者其他的方式。
- 要使用缩进。
当提交到Rails核心代码库的时候,你可能还需要进一步充实上面所说的过程。那么,可以提供一个URL显示你的修改在哪里可以被找到。或者用下面的命令产生一个文件。这个文件可以被用来重新显示你本地的修改历史。想查看你的修改的人只需使用git am命令就可以得到它。
$ git checkout my_funky_branch
$ git rebase origin/master
$ git format-patch –stdout origin/master.. > my_funky_patches
这有一个关于如何保持最新状态的提示:下载最新的更新的时候,使用git [...]
在Cygwin里使用Rails2.x生成项目时的一个Bug
平时除了在家里自己的Macbook上使用Textmate开发Rubyonrails程序之外,基本上都在用Windows写Rubyonrails程序。在Windows上写Rails代码真的不是什么愉快的事儿。虽然有NetBeans这样的IDE,但它中文和日文支持的还不是那么尽善尽美。所以,我一直都用Cygwin + GVim即Rails插件来写Rails。虽然在Cygwin里Ruby速度慢一点儿,但习惯GVim以后,基本不用碰鼠标的感觉真的是不错。
可是刚才遇到了一个小问题。就是在Cygwin里不能生成Rails项目了。如果执行Rails myproject来生成项目,就会出现下面的错误:
$ rails myproject
No such file or directory – /dev/urandom
这个问题很奇怪,/dev/urandom是Unix的一个系统级别的随机数生成器,Cygwin里有没有就清楚了。为了尽快解决问题,Google了一下。解决方法倒是很简单,不过真的很出人意料。
只需在/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/rails_generator/secret_key_generator.rb文件的第86行加上一句话:
puts “Before Read”
就可以了。这也太奇怪了。于是继续查原因。在Rails Trac里有人提交了Bug,但结论大概是说这不是Rubyorails和Cygwin的问题,而是Ruby1.8.6的Bug。

