Buildr Ruby Fehler, Rake :: Filetask in String kann nicht konvertiert werden
Frage
Ich habe das folgende Buildr Build -Datei -Segment:
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 ist 1.4.4, installiert mit dem Linux -Installationsskript auf zwei Machnies.
- Maschine 1: Debian 32bit, Ruby 1.8.7 (2008-08-11 PatchLevel 72) [I486-Linux
- Maschine 2: Ubuntu 64bit, Ruby 1.8.7 (2010-01-10 PatchLevel 249) [x86_64-linux
Maschine 1 kompiliert alles Datei. Maschine 2 scheitert am MARK
-D -Stelle mit
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'
Jetzt kann ich das sehen pbs
Ist ein Filetask und keine Zeichenfolge .. Aber wie kommt es, dass eine Maschine sie akzeptiert, die andere nicht? Gibt es eine erzwungene Konvertierung in die String?
Einige Buildr -Spuren sind bei angebracht http://pastebin.com/nf4hiyx9 .
Vielen Dank.
Lösung 2
Ich dachte mir, dass das Hinzufügen von. TO_S hilft und alles in Ordnung ist. Aber ich könnte eine Antwort schätzen, die genau die implizite Bekehrung verloren hat und warum sie gut ist (wenn ja).
/aus meinem früheren Kommentar/
Andere Tipps
Der Stacktrace auf Pastebin unterscheidet sich sehr von dem hier geklebten Stacktrace, von dem, was ich sehen kann.
Wo ist die Protoc -Methode definiert? Ist es Teil des Buildr Core?
Der Grund, warum es an einer Maschine fehlschlägt und nicht die andere, könnte die Version von Ruby sein, die Sie haben, da die Zeile, die fehlschlägt, "if File.EXIST? PATH" ist. Pfad soll es eine Zeichenfolge geben, wird aber wahrscheinlich in einem Fall in eine Zeichenfolge konvertiert, aber nicht in der anderen.
Die Gesamtfixe besteht darin, einen Anruf nach dem Aufrufen von Protoc (...), Protoc (...) hinzuzufügen. MAP (&: to_s).
Ich hoffe das hat geholfen.