文章标签 ‘Rails’

一直在非常缓慢的学习RubyOnRails。工欲善其事,必先利其器。程序员的利器之一就是编辑器。所有接触过Rails的人,都会对一个叫做TextMate的编辑器记忆深刻。但是我不是Mac用户,而TextMate又坚持不出Linux和Windows版本。想花钱用都没有机会。(当然,除非先花钱买个MacBook)这就坚定了我继续使用我自己的利器--Vim的决心。 在Ubuntu里面配置Vim非常简单。apt-get吧。然后gem install vim-ruby吧。这样你的Vim就有了最新的对于Ruby的支持。这还不够,因为我要开发Rails应用。要让Vim懂Rails。有个非常帅的Vim插件,rails.vim。它可以让人不离开Vim把Rails的一切都搞定。比如,script/generate model xxx,只需要在Vim里面:Rgenerate model xxx。还可以帮助非常快速的在Rails项目中切换文件。功能很强大,具体看这里吧。 不过,我使用的Rails是2.1+版本,这个rails.vim有一点问题。在:Rgenerate migration xxx的时候,总是打开一个空文件,而不是自动生成的migration文件。经过研究,发现原来是Rails2.1+后,每个migration文件的前缀由原来的序号变成了一个UTC的时间字符串。而rails.vim的策略是先-p执行一下命令,然后分析生成的文件名,再真正执行命令,最后打开文件。这个逻辑对于其他的命令都OK,只有migration不行。就是因为它的命名规则中加入了UTC时间字符串。导致了第一次-p执行和第二次真正执行之间文件名不同(因为时间还是稍微有差别的,比如1秒)。 知道了问题,就可以轻松把它修正。这就是源代码的力量。 在rails.vim中搜索这句话: 1 edit `=RailsRoot().’/’.file` 替换为: 1 2 3 4 5 6 7 if target == "migration" let suffix = strpart(file, stridx(file, "_")) let filename = system(’ls ‘.RailsRoot().’/db/migrate/*’.suffix) edit `=filename` else edit `=RailsRoot().’/’.file` endif

2008年8月26日18:53 | 没有评论
分类: Ruby
标签: , , ,