Was sind die Vorteile der Verwendung der FileUtils-Methoden http://ruby-doc.org/core/classes/FileUtils.html als die entsprechenden Bash-Befehle?Vorteile der Verwendung von Ruby FileUtils anstelle von Bash-Befehlen?
Antwort
Darüber hinaus müssen Sie sich keine Gedanken darüber machen, dass Ihre Zielplattform über die spezifischen Tools verfügt, die Sie verwenden, und über das Problem hinausgehen, Shell-Kuriositäten korrekt zu zitieren (besonders problematisch, wenn Sie Ziel ist sowohl Windows als auch Unix-Alikes - Cygwin, GNUWin32, usw., wenn Sie Ruby's FileUtils verwenden, haben Sie den moderaten Overhead eines Ruby Funktionsaufrufs, während Sie, wenn Sie externe Programme verwenden, ziemlich viel Aufwand haben ein externer Prozess jeder "Anruf".
Sie sind einfacher von innen Ruby-Skripten aufzurufen, weil sie Ruby-Objekte als Argumente akzeptieren. Das bedeutet, dass Sie nicht mit der Flucht fertig werden müssen und nicht jedes Mal, wenn Sie sie anrufen.
Sie müssen über Flucht keine Sorge, wenn 'System zu tun (“ cp ", file1, file2)' entweder (obwohl Sie tun, wenn Sie 'System (" cp # {file} # {file2} ")'). – sepp2k
Was meinst du mit Flucht? Was hat mit dem System zu entkommen ("cp source_file destination_file") –
@ajsie: Sie müssen Leerzeichen und spezielle Shell-Zeichen zu entkommen, wenn Sie die ein-Argument-Version von 'system' verwenden. Z.B. 'System (" cp Quelldatei Zieldatei ")' wird nicht funktionieren, weil die Leerzeichen nicht maskiert sind. Jedoch 'System (" cp "," Quelldatei "," Zieldatei ")' wird gut funktionieren. – sepp2k
Die FileUtils-Methoden funktionieren unter Windows.
so können Shell-Tools. (ie cygwin, GNU win32) – ghostdog74
@ ghostdog74: Nur wenn Sie sie zuerst installieren. Punkt ist: Wenn Sie FileUtils benutzen, wird Ihr Skript auf jedem System mit Ruby laufen. Wenn Sie cp verwenden, wird Ihr Skript auf jedem System mit ruby und cp laufen. Es gibt keinen Grund, eine zusätzliche Abhängigkeit für etwas so einfaches wie das Kopieren von Dateien hinzuzufügen. – sepp2k
müssen Sie zuerst Ruby installieren. – ghostdog74
Wenn Sie Objekte in der Shell farmen, fügen Sie eine Abhängigkeit von diesen Anwendungen hinzu. FileUtils ist purer Ruby, also funktioniert es (und funktioniert mehr oder weniger gleich) überall wo Ruby funktioniert.
Ich würde nicht sagen, es gibt keine Vorteile bei der Verwendung von Ruby's FileUtils, da Sie sie überall dort verwenden können, wo Sie Ruby haben (besonders wenn Ihre Aufgabe in der Web-Entwicklung ist). Das bedeutet jedoch nicht, dass Sie diese Shell-Tools nicht auch auf anderen Plattformen verwenden können. Ja, Sie können Ihre Skripte in * nix shell schreiben, und Sie können sie auch mit wenig oder gar keiner Änderung in, sagen wir, Windows mit cygwin oder GNU win32 (und anderen) ausführen. In Bezug auf die Vorteile von Rubys FileUtils gegenüber Shells, ist es nur minimal, denn was Sie mit FileUtils machen können, können Sie auch mit Shells machen.
- Arbeiten über mehrere Plattformen
- keinen neuen Prozess erzeugen Sie den Befehl zu erteilen (so verbraucht es weniger Ressourcen)
müssen Sie den Ruby-Interpreter ausführen, um das Ruby-Skript auszuführen. Dies erzeugt einen Prozess. nicht wahr? – ghostdog74
Ah, ich glaube, ich habe die Frage falsch interpretiert. Ich dachte, er würde nach dem Shell-Befehl von Ruby fragen. –
- 1. Ruby - FileUtils - dereference_root Option
- 2. Welche Vorteile bietet die Verwendung von BIO_printf() anstelle von printf()?
- 3. Vorteile der Verwendung von IEquatable
- 4. Vorteile der Verwendung von directoryperdb in MongoDB
- 5. Vorteile der Verwendung von Std :: Funktion
- 6. Vorteile der Verwendung von URLField über TextField?
- 7. Was sind die Vorteile/Vorteile der Verwendung von Python 3?
- 8. Welche Vorteile bietet die Verwendung der Aktionsleiste anstelle des Standardlayouts?
- 9. Vorteile der Verwendung von cql über Sparsamkeit
- 10. Vorteile der Verwendung von EncodePointer/DecodePointer
- 11. Vorteile der Verwendung von Rhino (Mozilla Nashorn)
- 12. Vorteile der Verwendung von NullWritable in Hadoop
- 13. Vorteile/Nachteile der Verwendung von MySQL-Triggern
- 14. Vorteile der Verwendung von Bundle anstelle von direkten Absicht putExtra() in Android
- 15. Gibt es irgendwelche Vorteile bei der Verwendung von size_t anstelle von unsigned int?
- 16. Welche Vorteile bietet Powershell anstelle von VBScript?
- 17. Was sind die Vorteile von Cassini anstelle von IIS?
- 18. Verwenden von FileUtils in Eclipse
- 19. Vorteile der Verwendung von ScalaFutures von ScalaTest vs. Await.result
- 20. R: Vorteile der Verwendung einer Fortran-Subroutine mit .Call und C/C++ - Wrapper anstelle von .Fortran?
- 21. Welche Vorteile bietet die Verwendung von UIAppearance-Proxy anstelle von Standardwerten?
- 22. Welche Vorteile bietet die Verwendung von ems anstelle von% in CSS?
- 23. Welche Vorteile bietet die Verwendung von Binär-E/A anstelle von Text-E/A?
- 24. Welche Vorteile bietet die Verwendung von Daten anstelle von x-Präfix für benutzerdefinierte Attribute?
- 25. Welche Vorteile bietet die Verwendung von log4cxx anstelle von plain syslog()?
- 26. Vorteile der Verwendung eines Konstruktors?
- 27. Vorteile der Verwendung mehrerer Schemas?
- 28. Vorteile und Nachteile der Verwendung von Java RMI
- 29. Vorteile der Verwendung von Bower über Git Submodule
- 30. Vorteile der Verwendung von JNA über die Prozessausführung
aber Sie müssen sich sorgen, ob Ruby auf dem Ziel installiert ist. – ghostdog74
Es sollte schmerzhaft offensichtlich sein, da die Person, die die Frage stellt, über Ruby-Module spricht, dass das Programm zweifellos ein Ruby-Programm ist. –
Ich sage nicht, dass es kein Ruby-Programm ist. Ich spreche von Ihrer Aussage "Zusätzlich zu der Tatsache, dass Sie sich keine Sorgen darüber machen müssen, dass Ihre Zielplattform über die spezifischen Tools verfügt, die Sie verwenden". Natürlich müssen Sie auch sicherstellen, dass die Zielplattform über Ruby verfügt, bevor er sein Ruby-Programm ausführen kann. – ghostdog74