Archive for the 'ruby on rails' Category

开源不是件容易的事情,坚持不倒更是不容易。

Wednesday, July 25th, 2007

今天看到这个David Heinemeier Hansson says No to Use of Rails Logo觉的并不是什么好事,DHH他们的做法没什么好说的,按DHH在评论中说的如果只是说源代码以外的东西倒是无所谓了,反正我不写书什么的。
只是我在担心DHH他们在被无数人F**K以后,是否还有那么大的激情继续rails?
其实开源真不是件容易的事情,特别是长久之后很可能失去心理平衡。
我很自大的认为我曾经对开源有过很大的兴趣,但是看到人们用自己的代码做种种事情的时候又不对你的工作做什么肯定(违反权利条款等等)的时候确实不是什么很好的感觉,“我花那么多时间为了什么?”,当然了那时候还小,而且所做的事情又不能称之为梦想。(也有自己去工作阿,以及多发展方向的选择问题了)
那时候国内还有个open source online(oso.com.cn),那简直就是Web2.0的先行者,不过02年的时候这面大旗也倒了。。
hehe,所以现在对于那些开源程序我始终抱着一刻感恩的心(每当用的时候都会感谢一下作者,真的,呵呵),特别是那些改变生活方式的东西象vim,rails,linux等等。。
update:
刚才打开oso.com.cn发现现在变成一个dedeCms建成的垃圾站了,悲哀。。。

Rails API with the AJAX flavor

Tuesday, July 10th, 2007

是不是觉得rails的api文档很难用?每次都要X个find next。
那就用这个吧。。 Rails API with the AJAX flavor
用了一个多月了。
是不是效率高了非常多。。。从此远离api.rubyonrails.org。
ps:weblog主机搬到自己的机器后速度快了不是一般的多。。。 那天导数据库的时候发现半年时间spam竟然有9万多条。哦,我喜欢。。
pps:
Rjs是个好东西,早期rails版本我老是不能用,现在属于标准件了,那天晚上用eMule下了个“O’Reilly.-.RJS.Templates.for.Rails.chm”看了10来分钟就会用了。。非常之爽。
ppps:
eMule[veryCd]是不错,但是事物往往有两面性估计无数的躁动的孩子们(包括我?)会浪费无数的时间用它来下载毛片消耗过于旺盛的精力。
pppps:
腾讯真是垃圾,装个QQ,还非把QQ游戏放到快速启动上去,浪费了多少小青年的青春啊。现在不管几岁的孩子都是泡泡堂的高手,这样的公司早早倒掉,改天去庙里给它拜拜。。。。
ppppps:
慢慢的发现自己有变成愤青的趋势,不为别的只是对于现状的不满(?),什么砖窑啊,什么煤矿啊,什么实名啊,什么XX啊(哦,闲谈莫论X是)那天看到网上有人说对于这些知道的多了才觉得痛苦,对于嫉妒心理比较重的国人来说(这可不是我说的)可能对于他的前男友的女友/前女友的男友男友的前女友/女友的前男友知道的少些可能他会快乐些,要不无知真的更快乐吗?http://memedia.cn/是个好网站。

rails版本升级后旧版本开发的程序怎么办?

Monday, June 25th, 2007

我的有些rails应用是05年写的,有的是06年写的,现在都1.2.X了,新应用当然是用1.2写了。
那在同一台服务器上的不同版本怎么办?(有些1.1 or 0.X版本的在1.2上跑不起来了)
1.将应用update到1.2
rake rails:update
# Update both configs, scripts and public/javascripts from Rails
注意:routes.rb,database.yml,environment.rb会被覆盖哦。
这种方式可能要改一些地方才行,有时候也update不成功。
如果原来的跑的很好,有不想改,或者update不成功呢?
2.那就使用:
rake rails:freeze:edge
# Lock to latest Edge Rails or a specific revision with REVISION=X (ex: REVISION=4021) or a tag with TAG=Y (ex: TAG=rel_1-1-0)
REVISION是找不到了。就用TAG吧。
你可以在这里找到相应的版本:
http://dev.rubyonrails.org/browser/branches
0.X,1.1.X的在1.1.6上基本跑的很好,建议使用这个版本:
rake rails:freeze:edge TAG=rel_1-1-6
(看checkout过程发现activerecord等模块是使用最新版本的)
这样就什么也不用改了。
详细说明参考:http://wiki.rubyonrails.org/rails/pages/EdgeRails

rake是个好东西,rails的Rakefile也定义了很多常用的命令,可以通过
rake –tasks
查看.

使用capistrano部署rails应用需要注意的几件事

Saturday, May 12th, 2007

0.最后补充的:对比development环境和运行环境的gem list,确保所有使用的gem都安装了。(upate:呵呵,不好意思,前面使用了development环境而不是“开发环境“,一般象我这样没文化的人都喜欢炫耀一下自己的英文有多好,请多包涵。其实前面写错了。。!_!)
1.修改database.yml中的用户密码。。。同样的你的数据库建立了没有?
2.修改dispatch.fcgi,reaper,spawner的权限+x svn co出来的是没用x权限位的
3.你的应用在windows下开发的?记得替换dispatch.fcgi,或是修改#! 后面的ruby路径(这个方法我使用时好像不行/usr/bin/env ruby,最简单安全的就是rails test 再把dispatch.fcgi更新到svn上去。
4.检查rails代码中有没用put语句(可能我的习惯比较不好),有就注释或是删除。
5.修改tmp目录的权限(777)。。。。(今天被这个问题折腾了很久)。应为一般情况下部署的用户和apache的运行的用户是不一样的。
6.没用6了,基本就是这些了。欢迎补充。。。
常用代码(有些是网上抄的):
desc “Restarting after deployment”
task :after_deploy, :roles => [:app, :db, :web] do
run “touch #{release_path}/public/dispatch.fcgi”
end
desc “Restarting after rollback”
task :after_rollback, :roles => [:app, :db, :web] do
run “touch #{release_path}/public/dispatch.fcgi”
end
desc “Tasks to execute after code update”
task :after_update_code, :roles => [:app, :db, :web] do
# fix permissions
run […]

Rails on Ubuntu Feisty

Friday, May 11th, 2007

Ubuntu Feisty 上通过gem install rails 安装rails后使用rails test命令会提示找不到命令,需要通过sudo apt-get install rails才行,刚开始的时候就觉的奇怪,不过原来的rails项目能用也没用在意,昨天装了Capistrano后cap命令还是不能用。。。想来应该是path的问题。。。
其实很简单:
leo@leo-laptop:/$ find . -name rails*
./var/lib/gems/1.8/bin/rails
把/var/lib/gems/1.8/bin加到PATH就OK了。
=================================
Rails模板慎用中文文件名。。
CMS系统中前几天为了后台编辑模板方便,于是修改模板命名规则,把模板文件命都改成了中午(Feisty默认utf-8编码)。结果在render_to_string是出现了非常怪异的现象,启动webserver后第一次render_to_string生成是没用问题的,第二次生成就不是这个模板的内容了,非常奇怪,以为是前面rails安装的问题,换到windows下后中文路径和文件根本没法生成。于是改回ascii文件名,就没问题了。。。。

Vim 开发 ruby on rails 完全配置(个人)

Friday, December 15th, 2006

用vim写rails越来越顺手了,估计不会再考虑用别的了,共享一下自己的配置。。。
首先应该感谢vim的作者们以及文中使用到的所有插件的编写者,是他们才使rails的开发如此方便。
以下为winxp环境,安装gvim 7.0 安装路径为: d:\gVim一般安装插件,如果是zip/gz之类的文件直接解压到gvim.exe同一目录(d:\gVim),如果是.vim文件则直接放在gvim.exe下的plugins目录(d:\gVim\plugins)就OK了。
使用到了ftplugin所以需要在D:\gVim\_vimrc中增加:filetype plugin on 这一行
1.安装rails.vim (rails.vim)毋庸置疑啦,首先肯定是装它了。11.1出的新版本(小修改并支持surround.vim-见下文),下载rails.zip解压到gvim.exe所在的目录(D:\gVim\vim70) 安装完成。使用方法及更多说明见本站:vim+rails.vim ruby on rails (ror)开发的利器 及docs下的rails.txt
2.安装project (project-1.4.1.tar.gz)项目导航,方便的浏览打开文件(我只用到这个功能) 在rails项目中使用 :Rproject 打开。也许你要说了rails.vim不是很方便的切换各种文件吗?为什么还要装这个呢?是的rails.vim确实很方便,经过实践得出:有时候你要打开css之类的文件就不那么方便了(先打开Rlayout 再gf到css,或是我不会用?)还有就是当你的model和migrate不对应的话也不方便。所以有时候还是要用鼠标点来得快。
3.安装ruby_imaps (ruby_imaps.zip)这可是个好东西,原来很羡慕人家mac下的textmate不过有了这东西,咱也不错了,而且自己hack还很简单。详细命令见包中的ftplugin中的ruby_imaps.vim,命令很多,但是常用的也就那几个。我自己hack了一下,加了几个在rhtml中常用的标签,link_to for in end 啊之类的。请到这里下载>>> 下载。。(2006.12.14 今天没搞完,这两天把改完的传上来,不好意思。)欢迎大家把自己hack的东西发一份给我,谢谢。。。在不同的编辑位置切换用 ctrl+j
This is (another) snippets script that tries to emulate what I’ve seen of Textmates snippets feature (I haven’t used Textmate, so this assumption is based on rails screencasts I’ve […]

让ruby on rails的搜索插件 acts_as_ferret支持增量索引

Wednesday, December 6th, 2006

刚才写的丢了,重写一遍,
简单的说为什么要让acts_as_ferret支持增量呢?由于它本身只支持在activeRecord操作时才能增量而后台insert或是update的不能重新建立索引,另一方面呢,全量重新索引太慢了(在我的2G内存p805d cpu的机子上不到10万的记录跑了一个多小时)所以:
rails的插件acts_as_ferret支持增量索引.
def idx_create
Tname.find(:all, :conditions => “state=’I0A’”).each{|rec|
Tname.ferret_index