`
CharlesCui
  • 浏览: 431181 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

这是CruiseControl.rb的Bug吧

阅读更多
家里没有Linux,又很想跑下CC.rb,
最近一个项目需要了解下持续集成,所以在家里下载了最新的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

分享到:
评论
4 楼 archangelwin 2009-05-26  
也可以用虚拟机嘛。。机子好一点跑起来一样很爽。
3 楼 Xorcerer 2009-05-22  
CharlesCui 写道
家里的机器不止给自己用啊,

一半的时间还要给父母用呢,

所以windows还是有用户的,因为够简单易用。

默认进Windows,想用Linux时启动时选择。
2 楼 CharlesCui 2009-05-21  
家里的机器不止给自己用啊,

一半的时间还要给父母用呢,

所以windows还是有用户的,因为够简单易用。
1 楼 花花公子 2009-05-21  
windows上跑CI肯定不爽的,连cron都没有。
家里没有Linux可以自己装嘛,ubuntu 9.04还是很不错的。

相关推荐

    持续集成之CruiseControl.rb

    **持续集成之CruiseControl.rb** CruiseControl.rb是一款开源的持续集成工具,主要用于自动化构建、测试和部署软件项目。它是由ThoughtWorks公司开发的,是CruiseControl.NET的Ruby版本,因此在Ruby社区中被广泛...

    cruisecontrol.rb:Ruby的CruiseControl。 把事情简单化

    CruiseControl.rb:简单的持续集成 ###介绍 是一个服务器。 它使团队中的每个人都了解项目的运行状况和进度。 CC.rb易于安装,易于使用且易于破解。 它是用Ruby编写的,并由软件开发咨询公司的开发人员在业余...

    全套汽车巡航系统模糊控制设计Matlab文件-CruiseControl.zip

    全套汽车巡航系统模糊控制设计Matlab文件-CruiseControl.zip 全套m.file文件,包括模型和 CruiseControl.zip 模糊控制器设计。

    cruisecontrol配置定时运行

    CruiseControl通过一个XML配置文件来定义其行为,这个文件通常被称为`cruisecontrol.xml`。在这个文件中,我们可以设置各种属性,包括构建触发器、构建步骤、通知规则等。 **1. 安装与启动CruiseControl** 在开始...

    cruisecontrol_ant_svn持续集成

    cruisecontrol.war 文件,你可以直接将这个文件 COPY 到你的%TOMCAT_HOME%\webapps 目录下,不 过这种方式通常都会出错,前 面我们讲过CC的WEB组件要访问我们的项目build 的状态文件,而下载的 CC2.2 里面自带的 ...

    持续集成工具CruiseControl.part1

    CruiseControl is both a continuous integration tool and an extensible framework for creating a custom continuous build process. It includes dozens of plugins for a variety of source controls, build ...

    持续集成工具CruiseControl.part2

    CruiseControl is both a continuous integration tool and an extensible framework for creating a custom continuous build process. It includes dozens of plugins for a variety of source controls, build ...

    持续集成工具CruiseControl.part4

    CruiseControl is both a continuous integration tool and an extensible framework for creating a custom continuous build process. It includes dozens of plugins for a variety of source controls, build ...

    持续集成工具CruiseControl.part3

    CruiseControl is both a continuous integration tool and an extensible framework for creating a custom continuous build process. It includes dozens of plugins for a variety of source controls, build ...

    cruisecontrol.rar_仿真模型_汽车_汽车PID_汽车控制_汽车模型

    "cruisecontrol.rar"是一个关于汽车控制系统的仿真模型,其中包含了汽车模型以及PID控制模型的整合。本文将详细解析这一主题,帮助读者深入理解PID控制在汽车控制中的原理与应用。 首先,汽车模型是整个控制系统的...

    CruiseControl简介及使用举例

    首先,CruiseControl的安装通常涉及下载最新版本的软件包,如V2.6.2,这可以从其官方网站sourceforge.net获取。安装完成后,系统会包含一系列必要的文件和目录,比如`cruisecontrol.bat`用于启动服务,`config.xml`...

    cruisecontrol配置文件.rar

    `main.jsp` 是CruiseControl Web界面的一个页面,用户可以通过这个页面查看构建状态、历史记录以及错误报告等信息。页面通常会展示构建的进度条、最近的构建结果、项目列表和详细的构建日志。`main.jsp` 文件的定制...

    [CruiseControl]binary安装和启动

    - **CruiseControl 目录**:`%~dp0` 表示当前脚本所在的目录,这通常是 CruiseControl 的安装目录。 - **JMX 端口配置**:`-jmxport 8000 -rmiport 1099` 参数用于指定 JMX server 的端口,使得远程监控成为可能。 ...

    cruise_control.zip.zip

    【压缩包子文件的文件名称列表】: cruise_control.zip 这意味着在解压外层的"cruise_control.zip.zip"后,我们将会得到一个名为"cruise_control.zip"的文件。这个内部压缩文件可能包含以下几个部分: 1. **源代码**...

    CruiseControl-2.8.4.exe

    CruiseControl-2.8.4.exe

    CruiseControl使用指南.rar

    这份"CruiseControl使用指南.rar"包含了一系列关于如何有效利用CruiseControl进行持续集成的资源,包括文章、教程和示例。 1. **CruiseControl简单使用介绍**:这部分可能涵盖了CruiseControl的基本操作,如安装、...

    CruiseControl持续集成

    而现在,CruiseControl已发展成为一个家族式系统,包括CruiseControl.java、CruiseControl.net、CruiseControl.ruby等适应不同语言环境的实现,其强大的插件和扩展能力也是诸多同类系统无法比你的。而在这里,我只...

    CruiseControl学习教程.pdf

    这个项目将包含必要的构建和测试逻辑,以展示CruiseControl如何处理完整的构建周期。 1.5 config.xml CruiseControl的主要配置文件是`config.xml`,其中定义了项目的构建流程。有两种主要的配置方式: - **普通方式...

    整车cruise控制.rar_Cruise Control_cruise_traceujz_整车_整车控制

    文件“Vehicle_Cruise control_Matlab”很可能包含了实现这一功能的MATLAB源代码。 Cruise Control的核心是控制器,通常采用PID(比例-积分-微分)控制器或者更先进的控制策略。PID控制器通过调整发动机的输出功率...

    CruiseControl

    - **OpenDoc-CruiseControl.pdf**:这可能是一个开源社区编写的CruiseControl文档,可能包含了社区的最佳实践、最新更新和用户经验分享。 深入学习这些文档,开发者将能更好地理解和应用CruiseControl,提升团队的...

Global site tag (gtag.js) - Google Analytics