Ich habe ein Shell-Skript geschrieben, das ich sehr nützlich finde und gerne wiederverwenden würde. Grundsätzlich liest es eine Excel-Datei (über den RubyXL-Edelstein) und erlaubt dann Benutzern, bestimmte Reihen zu nehmen und sie als json Gegenstände zu exportieren. Da es jedoch darauf ankommt, viele Argumente (Spalten, Zeilen usw.) zu übergeben, frage ich mich, ob es sinnvoll wäre, dies als Edelstein zu verpacken. Ich habe kein Juwel veröffentlicht, aber ich habe es gelesen und es scheint als wäre es nicht so schwierig. Ich frage mich, wie nützlich oder wenn ein Shell-Skript wirklich das richtige Format ist?Wäre es sinnvoll, ein Ruby-Shell-Skript als Edelstein zu verpacken?
Antwort
Ich würde ja sagen, es zu einem Juwel zu machen, aber nur, wenn Sie die Funktionalität als Ruby-Klassen und/oder -Methoden bereitstellen, damit Ihre Funktionalität von anderen Ruby-Skripten und nicht nur von der Befehlszeile aufgerufen werden kann.
Damit können Sie Ihren Code besser organisieren; Ihr Verzeichnis lib
würde die Kernlogik enthalten, ein spec
oder test
Verzeichnis hätte Einheitentests, und das bin
Verzeichnis würde Ihr Befehlszeilenskript haben, das wahrscheinlich nur ein winziger Wrapper wäre, der den lib
Code nennt.
Danke. Ich habe es nicht so gebaut, aber ich denke, die Konvertierung wäre angesichts der Größe nicht allzu schlecht. – user3162553
- 1. Wäre es sinnvoll, in C++ eine Operation "contify" zu haben?
- 2. Wäre es sinnvoll, ein Objekt mit einer externen Methode zu setzen? Verwenden Sie das?
- 3. Ist es sinnvoll, mehr als eine MethodSecurityInterceptor-Bean zu haben?
- 4. Ist es sinnvoll, eine gelöschte Funktion als noexcept zu deklarieren?
- 5. Python: Ist es sinnvoll, ein Unterpaket zu importieren?
- 6. Wäre es möglich, WebSockets als Proxy zu verwenden?
- 7. Wäre es sinnvoll, die ASPX/.ascx-Suche zu entfernen, wenn ich sie nicht verwenden möchte?
- 8. TCPL 5.9.9 (C++): Wo wäre es sinnvoll, einen Namen in seinem eigenen Initialisierer zu verwenden?
- 9. Wäre es sinnvoll, die Reihenfolge der Zerstörung von Vektorelementen zu definieren?
- 10. Ist es sinnvoll, ein RTOS und zyklisches Executive zu mischen?
- 11. Ist es sinnvoll, Themenstrings zu versionieren?
- 12. Wann ist es sinnvoll, MVVM zu verlassen?
- 13. Ist es sinnvoll, eine Basisklassenfunktion sowohl als virtuell als auch als final zu kennzeichnen?
- 14. Ist es legal, auf ein zweidimensionales Array zuzugreifen, als ob es ein eindimensionales Array wäre?
- 15. Wie wäre es, FileInputStream zu puffern?
- 16. Wäre es möglich, ein MMO in Javascript/WebGL als Frontend zu erstellen?
- 17. Ist es sinnvoll, jedes Navigationselement in ein div einzubinden?
- 18. Ist es sinnvoll, für jeden Entwickler eine Niederlassung zu erstellen?
- 19. Ist OOP in PHP sinnvoll?
- 20. Ist es sinnvoll, in großen Projekten mehr als 65536 benutzerdefinierte Typen zu verwenden?
- 21. Wäre ein OnSharedPreferenceChangeListener ein Leck?
- 22. Wäre es richtig zu sagen, dass JAXB zu XML als Hibernate zu einem Datenbankschema ist?
- 23. Ist es sinnvoll, LINQ zu verwenden, um Schleifen zu ersetzen?
- 24. StringScanner entspricht einer Zeichenfolge, als wäre es eine Position zurück
- 25. Ist es sinnvoll, die Entwicklungsumgebung mit Docker zu containerisieren?
- 26. Wann ist es sinnvoll synchrone Ajax zu verwenden?
- 27. Ist es für moderne Anwendungen sinnvoll, große Speichermengen zu verbrauchen?
- 28. Erzwingen einer bestimmten Edelstein-Version als Standard?
- 29. Ist es möglich, Versprechen innerhalb Generator zu verpacken?
- 30. Was wäre ein gutes Datamodel, um ein Datamodell zu beschreiben?
Ich denke, es ist besser, einen GitHub zu machen und ihn zu ziehen, wenn Sie das Skript brauchen. oder machen Sie das Skript generisch genug mit einfachen Konfigurationsoptionen und guter Dokumentation, um es als Juwel zu bündeln. – sa77
Ja, ich denke, der Kern ist vielleicht der bessere Ansatz. – user3162553
Sie können das GLI-Juwel verwenden, um eine Befehlszeilen-App zu erstellen, und wenn Sie nicht zu RubyGems schieben möchten, können Sie es auf GitHub speichern, da Bundler Ihnen erlaubt, Edelsteine von GitHub zu installieren. –