浏览 1793 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-20
最后修改:2009-05-21
最近一个项目需要了解下持续集成,所以在家里下载了最新的CC.rb装起来,并且cruise add了两个项目, 问题是,把CC跑起来后,首页看不到我加的那两个项目,而在 C:\Documents and Settings\Administrator\.cruise\projects 这里的确存在! 看了下CC的逻辑,找到Projects模型的几个关于加载的方法, def initialize(dir = CRUISE_DATA_ROOT + "/projects") @dir = dir @list = [] end def load_all @list = Dir["#{@dir}/*"].find_all {|child| File.directory?(child)}.sort. collect {|child| Projects.load_project(child)} self end 打开Console开始调试, 我一开始怀疑@dir路径的值不对, 于是这样: >> Projects.new.instance_eval{@dir} => "C:\\Documents and Settings\\Administrator/.cruise/projects" 没问题啊,是这个路径。 再想想,是不是@list是空的啊, 结果一试的确是空的,nnd。 跟着load_all里面的代码继续尝试,发现这里有问题: Dir["#{@dir}/*"] >> Dir["C:/Documents and Settings/Administrator/.cruise/projects/*"] => ["C:/Documents and Settings/Administrator/.cruise/projects/test_cc", "C:/Docu ments and Settings/Administrator/.cruise/projects/testcc2"] >> Dir["C:\\Documents and Settings\\Administrator/.cruise/projects/*"] => [] Windows和Linux路径分隔符不统一导致,CC又没有人为避免,结果就把我郁闷了一下:( 郁闷啊,今晚不搞了,明天还是回到linux上搞搞吧。 不爽, 实在很想马上试试CC,得把它搞定! 继续调试,上面写在load_all中的代码可以手动的改掉,但CRUISE_DATA_ROOT这个变量的值要改成windows的分隔符有点麻烦,要找到CRUISE_DATA_ROOT在什么地方。 在boot.rb找到了CRUISE_DATA_ROOT的最初定义, unless defined? CRUISE_DATA_ROOT if ENV['CRUISE_DATA_ROOT'] CRUISE_DATA_ROOT = ENV['CRUISE_DATA_ROOT'] else CRUISE_DATA_ROOT = File.join(find_home, ".cruise") end puts "cruise data root = '#{CRUISE_DATA_ROOT}'" end 看到File.join这玩意,以前没好好主意,马上试了下,发现即便在windows平台,它也是默认'/'为路径分隔符的,太讨厌。 改掉它! unless defined? CRUISE_DATA_ROOT if ENV['CRUISE_DATA_ROOT'] CRUISE_DATA_ROOT = ENV['CRUISE_DATA_ROOT'] else #CRUISE_DATA_ROOT = File.join(find_home, ".cruise") CRUISE_DATA_ROOT = File.join(find_home, ".cruise").gsub('\\','/') end puts "cruise data root = '#{CRUISE_DATA_ROOT}'" end 重启,看到了CC首页上我建的两个项目,搞定! 改这里更好些: ['HOME', 'USERPROFILE'].each do |homekey| #return ENV[homekey] if ENV[homekey] return ENV[homekey].gsub('\\','/') if ENV[homekey] end 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-05-21
windows上跑CI肯定不爽的,连cron都没有。
家里没有Linux可以自己装嘛,ubuntu 9.04还是很不错的。 |
|
返回顶楼 | |
发表时间:2009-05-21
家里的机器不止给自己用啊,
一半的时间还要给父母用呢, 所以windows还是有用户的,因为够简单易用。 |
|
返回顶楼 | |
发表时间:2009-05-22
CharlesCui 写道 家里的机器不止给自己用啊,
一半的时间还要给父母用呢, 所以windows还是有用户的,因为够简单易用。 默认进Windows,想用Linux时启动时选择。 |
|
返回顶楼 | |
发表时间:2009-05-26
也可以用虚拟机嘛。。机子好一点跑起来一样很爽。
|
|
返回顶楼 | |