ROR

如何用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)。 – 一般情况下用短横线或星号,后面跟一个空格。段落之间用几个空行,或者其他的方式。 [...]

ROR, tools

在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。

ROR

Rails2.0定制action

Rubyonrails在完全接受REST思想推出2.0版本以后,action的写法与以前有了很大的不同。 一般的,index, show, new, edit, create, update,destroy默认的七个action就以足够了。但是如果有特殊要求的话,可以通过以下方法添加action。 比如在config/routes.rb有这样一个Resource: map.resources :courses 如果要向这个resource里加一个introduce action的话,只需要在后面加上:collection。 map.resources :courses, :condition => { :introduce => :get } :introduce即action的名称 :get是采用什么方式向server发送信息。根据需要也可以使用:post等。

ROR