我在 TeamCity 构建环境中测试命令行 gem 时遇到了一些问题。
我正在研究用于构建各种类型的 list 文件的 gem,elf_manifesto .它从命令行运行,我已经用 Cucumber 成功地测试了它,而且非常有用 Aruba gem .在本地,我正在使用 RVM、ruby 1.9.2 开发 Lion MBP。一切都很好。
将构建过程移动到工作中的 TeamCity 环境时出现了问题。 TeamCity 代理在 Windows 框上运行,问题似乎是当从 Aruba 触发命令行可执行文件时,在 Windows 框的路径环境中找不到脚本。这是构建日志中的 Cucumber 输出片段。
[13:46:37]: [Scenario: Start manifesto with no parameters] When I run `manifesto`
[13:46:37]: [When I run `manifesto`] ChildProcess::LaunchError: The system cannot find the file specified. (2)
Aruba gem 旨在在运行测试时负责将可执行文件(位于 bin 目录中)添加到路径中。这在我的本地设置上工作正常,但在 Windows 上失败。我已经尝试将 RUBYPATH 环境变量添加到 TeamCity 中的构建参数,但到目前为止没有成功。
有人指点吗?
提前致谢。
最佳答案
根据我的经验,Aruba 不会将您的 gem 从 bin/
添加到路径中。即使在基于 UNIX 的项目上,我也必须自己完成:
在env.rb
中:
PROJECT_ROOT = File.join(File.dirname(__FILE__),'..','..')
ENV['PATH'] = "#{File.join(PROJECT_ROOT,'bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
话虽这么说,但我从未让 Aruba 在 Windows 上像在 UNIX 上那样工作。
为了帮助诊断,请在您的功能上使用 @announce
标记(这会导致打印 stderr 和 stdout),甚至可能在您的自定义步骤中放入您自己的日志语句。
关于ruby - 在 TeamCity 上构建和测试命令行 Gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8942801/