buildr红宝石错误,无法将Rake :: FileTask转换为字符串
题
我有以下buildr buildfile段:
require "buildr/protobuf"
....
define "protobuf-stuff" do
pbs = protoc(
Dir[_("pbsrc/some/pkg/*.proto")], {
:include => [_("pbsrc")],
})
comp = compile.from(pbs).with(PROTOBUF_LIB) # MARK
package :jar
end
Buildr为1.4.4,在两个Machnies上安装了Linux安装脚本。
- 机器1:Debian 32bit,Ruby 1.8.7(2008-08-11 Patchlevel 72)[I486-Linux
- 机器2:Ubuntu 64bit,Ruby 1.8.7(2010-01-10 Patchlevel 249)[X86_64-Linux
机器1编译所有文件。机器2失败了 MARK
-ed地方,有
Buildr aborted!
TypeError : can't convert Rake::FileTask into String
/usr/lib/ruby/gems/1.8/gems/buildr-1.4.4/lib/buildr/core/application.rb:414:in `raw_load_buildfile'
/usr/lib/ruby/gems/1.8/gems/buildr-1.4.4/lib/buildr/core/application.rb:218:in `load_buildfile'
/usr/lib/ruby/gems/1.8/gems/buildr-1.4.4/lib/buildr/core/application.rb:213:in `load_buildfile'
现在我可以看到 pbs
是Filetask而不是字符串。但是一台机器如何接受,另一台机器不接受呢?是否有强制转换来串字符串?
一些构建轨迹附着在 http://pastebin.com/nf4hiyx9 .
谢谢你。
解决方案 2
我认为添加.to_s有帮助,一切都很好。但是我可以欣赏一个答案,即告诉隐性转换在哪里丢失了,为什么(如果是)很好。
/从我之前的评论/
其他提示
与我所看到的相比,Pastebin上的堆叠与这里粘贴的堆叠式叠加。
原始方法在哪里定义?它是Buildr Core的一部分吗?
鉴于失败的行是“如果file.exist?path?path?”,它之所以在一台计算机上失败而不是另一台计算机失败的原因。路径应该有一个字符串,但在一种情况下可能会转换为字符串,而不是另一种情况。
总体修复是在调用ProtoC(...),ProtoC(...)。MAP(&:to_s)之后添加调用。
我希望这有所帮助。
不隶属于 StackOverflow