¿Cuáles son los beneficios de usar los métodos FileUtils http://ruby-doc.org/core/classes/FileUtils.html que los comandos Bash equivalentes?¿Beneficios del uso de Ruby FileUtils en lugar de comandos Bash?
Respuesta
Además del hecho de que no tiene que preocuparse por asegurarse de que su plataforma objetivo tenga instaladas las herramientas específicas que está utilizando, y además del problema de hacer citas adecuadas de rarezas de shell (especialmente problemático si tanto para Windows como para Unix-Cygwin, GNUWin32, etc.), si usas FileUtils de Ruby tienes una sobrecarga de tamaño moderado de una llamada de función de Ruby, mientras que si usas utilidades externas, tienes la carga bastante considerable de disparar un proceso externo cada "llamada".
Son más fáciles de llamar desde dentro de los scripts de Ruby porque aceptan objetos de Ruby como argumentos. Esto significa que no tiene que manejar el escape y lo que no cada vez que los llame.
Usted no tiene que preocuparse de escapar al hacer 'sistema (" cp ", file1, file2)' cualquiera (aunque lo haga cuando lo haga 'system (" cp # {file} # {file2} ")'). – sepp2k
¿Qué quieres decir con escapar? ¿Qué ha escapado con el sistema ("cp archivo_fuente archivo_destino") –
@ajsie: debe usar espacios y caracteres especiales del shell cuando usa la versión de un argumento de 'system'. P.ej. 'system (" archivo de destino del archivo de origen cp ")' no funcionará, porque los espacios no se escapan. Sin embargo 'system (" cp "," source file "," destination file ")' funcionará bien. – sepp2k
Los métodos de FileUtils funcionan en Windows.
también puede usar herramientas de shell. (es decir, cygwin, GNU win32) – ghostdog74
@ ghostdog74: solo si los instala primero. El punto es: si usas FileUtils, tu script se ejecutará en todos los sistemas con ruby. Si usa cp su script se ejecutará en todos los sistemas con ruby y cp. No hay ninguna razón para agregar una dependencia adicional para algo tan simple como copiar archivos. – sepp2k
primero tiene que instalar Ruby también. – ghostdog74
Cuando cultivas las cosas en el shell, estás agregando una dependencia a esas aplicaciones. FileUtils es rubí puro, por lo que funciona (y funciona igual, más o menos) en cualquier lugar que funcione Ruby.
No diría que no hay beneficios en el uso de FileUtils de Ruby, ya que puede usarlos en cualquier lugar donde tenga Ruby (especialmente si su tarea está en desarrollo web). Pero eso no significa que no puedas usar esas herramientas de shell en otras plataformas también. Sí, puedes escribir tus scripts en * nix shell, y puedes ejecutarlos también con poca o ninguna modificación en, digamos, Windows usando cygwin o GNU win32. (Y otros). En cuanto a los beneficios de FileUtils de Ruby contra shell's, es mínimo, ya que lo que puedes hacer con FileUtils también lo puedes hacer con Shell.
- funciona en múltiples plataformas
- no desovar un nuevo proceso para emitir el comando (por lo que consume menos recursos)
tiene que ejecutar el intérprete de ruby para ejecutar el script de ruby. Esto está generando un proceso. ¿no es así? – ghostdog74
Ah, creo que he malinterpretado la pregunta. Pensé que estaba preguntando sobre usar el comando de shell de Ruby. –
- 1. MongoDB: beneficios del uso de objetos incrustados
- 2. clase de archivos vs. FileUtils Rails de Ruby
- 3. Cómo ejecutar los comandos de Ruby y GIT en un solo lugar en Windows
- 4. Beneficios del uso de la reserva() en un vector - C++
- 5. $ * en secuencias de comandos bash
- 6. Usando salida de comandos previos en bash
- 7. Uso del símbolo de intercalación (^) en Ruby
- 8. Código Uso del bloque {} en bash
- 9. utilizando comandos de bash en Perl
- 10. Sintaxis del bash de Bash
- 11. perl backticks: use bash en lugar de sh
- 12. Beneficios del esquema de aprendizaje?
- 13. la ejecución de comandos Bash en Python
- 14. Ejecutar secuencia de comandos bash bash desde Emacs
- 15. Combinación de comandos R + awk + bash
- 16. Eventos en lugar de comandos en MVVM?
- 17. Uso de SQLDataReader en lugar del conjunto de registros
- 18. Desventajas del uso de NodeJS en lugar de PHP
- 19. Ejecutar comandos Bash desde PHP
- 20. ¿Cómo obtener las estadísticas del historial de comandos de Bash, como los comandos más utilizados en los últimos 6 meses?
- 21. Tela: uso de comandos locales
- 22. ¿Cómo uso Ruby para scripts de shell?
- 23. Procesamiento paralelo desde una cola de comandos en Linux (bash, python, ruby ... lo que sea)
- 24. Uso variable en lugar del nombre de la función
- 25. Bash Scripting - cáscara de redirección de la salida de comandos
- 26. Variables como comandos en scripts bash
- 27. línea de ejecución del archivo en bash
- 28. Uso de los controles web del usuario en lugar de formularios web
- 29. Beneficios de eventos utilizando EventArgs/EventArgs <T> tipos de delegado en lugar de ...
- 30. Bash: cómo atravesar la estructura del directorio y ejecutar comandos?
, pero también debe preocuparse si Ruby está instalado en el destino. – ghostdog74
Debería ser dolorosamente obvio, dado que la persona que hace la pregunta está hablando de los módulos de Ruby, que el programa es, sin duda, un programa de Ruby. –
no estoy diciendo que no sea un programa de Ruby. Estoy hablando de su declaración "Más allá del hecho de que no tiene que preocuparse por garantizar que su plataforma objetivo tenga instaladas las herramientas específicas que está utilizando". Obviamente, también necesitarás asegurarte de que la plataforma objetivo tenga Ruby antes de poder ejecutar su programa Ruby. – ghostdog74