Ich möchte ein kleines Ruby-Projekt mit 10 ~ 20 Klassen / Dateien erstellen. Ich brauche einige Edelsteine und möchte RSpec als Testframework verwenden.
Ich möchte vielleicht später einen Edelstein bauen, aber das ist nicht sicher.
Gibt es eine Anleitung oder Anleitung, die mir zeigt, wie ich die Grundstruktur meines Projekts einrichte?
Fragen, die ich habe, sind:
- Wo lege ich alle meine benutzerdefinierten Fehler / Ausnahmen ab?
- Gibt es einige Konventionen zum Benennen von Verzeichnissen wie lib, bin, src usw.?
- Wo lege ich Testdaten oder Dokumente ab?
- Wo benötige ich alle meine Dateien, damit ich in meinem Projekt darauf zugreifen kann?
Ich weiß, dass ich alles von Grund auf neu machen kann, aber ich hätte gerne eine Anleitung. Es gibt einige gute Juwelen, die ich kopieren könnte, aber ich bin nicht sicher, was ich wirklich brauche und was ich löschen kann.
Ich habe mir http://gembundler.com/ angesehen , aber es hört nach dem Einrichten von Bundler auf.
ruby
project-structure
Ayckoster
quelle
quelle
Antworten:
Um einen guten Start zu erhalten, können Sie den
bundle gem
Befehl und verwendenrspec --init
.lib
spec
spec/fixtures/
lib/my_lib.rb
. Sie können Ihre Ausnahmen auch in dieser Datei oder in ihren eigenen Dateien definieren - ganz nach Ihren Wünschen.ext/my_lib
bin
Wenn Sie Zweifel haben, schauen Sie sich einfach an, wie andere Edelsteine angeordnet sind.
Weitere Informationen:
Sie sollten rspec als Entwicklungsabhängigkeit in Ihre gemspec einfügen, um anderen Entwicklern die Arbeit zu erleichtern
gem.add_development_dependency 'rspec'
und nähern Sie sichgem.add_development_dependency 'rake'
dem unteren Rand.Bundler.setup
undrequire 'my_lib'
oben in spec / spec_helper.rb hinzu, um sicherzustellen, dass Ihre Gem-Abhängigkeiten geladen werden, wenn Sie Ihre Spezifikationen ausführen.require "rspec/core/rake_task"
undtask :default => :spec
zu Ihrem Rakefile hinzu, damitrake
beim Ausführen Ihre Spezifikationen ausgeführt werden.Während Sie an Ihrer neuesten Kreation arbeiten, können Sie mit guard-rspec Zeit und Ärger sparen , indem Sie Ihre Spezifikationen automatisch ausführen, wenn sich Dateien ändern, und Sie auf Spezifikationsfehler aufmerksam machen.
Wenn Sie mit Ihrer Kreation zufrieden sind, schieben Sie sie auf Github
Wenn Sie dann bereit sind, Ihren Edelstein auf Rubygems.org freizugeben, führen Sie ihn aus
rake release
, der Sie durch die einzelnen Schritte führt.Weitere Referenzen
quelle
-b, [--bin=Generate a binary for your library.]
mit verwendenbundle gem
.bundle gem <gem-name> -t
das Äquivalent vonrspec --init
allen gleichzeitig ausführen.Auf rubygems.org gibt es einige nette Anleitungen , die Ihnen die Konventionen und die Gründe für einige von ihnen vorstellen. Im Allgemeinen werden die meisten Ruby-Entwickler den Rubygems-Namens- und Verzeichniskonventionen folgen.
Ich würde nur benutzerdefinierte Ausnahmeklassen erstellen, wenn ich keine Klasse in der Standardbibliothek finden könnte, die der Fehlerbeschreibung entspricht. Verschachteln Sie Ihre Fehlerklasse unter der Klasse oder dem Modul, die bzw. das sie auslöst:
Unit-Tests gehen entweder in
/test
, wenn Sie verwendenTest::Unit
, oder in,/spec
wenn Sie verwendenRSpec
. Ich empfehle letzteres.Bundler
ist eine großartige Möglichkeit, Ihren Ladepfad zu verwalten. Es wird Ihre Umgebung automatisch nur mit den Abhängigkeiten einrichten, die aufGemfile
und optional angegeben sindgemspec
. Außerdem können Sierequire
Ihren Code ganz einfach erstellen, ohne ihn zu einem Juwel zu machen.Da Sie Ihren Code jedoch möglicherweise in Zukunft in einem Edelstein bündeln, empfehle ich, zu untersuchen, wie Edelsteinspezifikationen erstellt werden . Sie sollten Ihre Spezifikation manuell schreiben. Verwenden Sie kein Tool, um es automatisch zu generieren - meiner Meinung nach handelt es sich um Brute-Force-Ansätze, die Informationen unnötig duplizieren und bei Verwendung mit der Quellcodeverwaltung Chaos anrichten.
Ich habe ein Juwel geschaffen, das Sie vielleicht nützlich finden. Bei einer
gemspec
Datei definiert es viele nützlichenRake
Aufgaben für die Zusammenarbeit mit Edelsteine arbeiten, die Aufgaben für den Aufbau umfasst, die Installation und Juwel Freigaberubygems
undgit
Repository mit automatischer Version Tagging. Es bietet auch eine einfache Möglichkeit, Ihren Code in eineirb
oder einepry
Sitzung zu laden .quelle
Hier sind die Konventionen, die ich am häufigsten gesehen habe (vorausgesetzt, Ihr Projekt heißt "foo"):
In lib / besteht die Konvention normalerweise darin, einen Ordner für jeden Sub-Namespace in Ihrem Namespace der obersten Ebene zu erstellen. Beispielsweise befindet sich die Klasse Foo :: Bar :: Baz normalerweise unter /lib/foo/bar/baz.rb.
Einige Leute möchten eine /lib/foo/version.rb-Datei erstellen, um die Foo :: VERSION-Konstante festzulegen, aber sehr oft habe ich dies in der /lib/foo.rb-Datei definiert gesehen.
Wenn Sie einen Edelstein erstellen, benötigen Sie außerdem die folgenden Dateien:
quelle
Im Internet gibt es einige Anleitungen zum Strukturieren eines Ruby-Projekts. Außerdem denke ich, dass der beste Weg, dies zu lösen, darin besteht, über Github zu gehen und nach einem berühmten Ruby-Projekt zu suchen und "ihre" Strukturen zu überprüfen.
Neben den allgemeinen Anforderungen an Rubinsteine empfehle ich die folgenden Tools für einen besseren Workflow:
package
: Edelsteinpaket bauenclean
: Generierte Dateien bereinigentest
: LauftestUnd neben all den oben genannten Tools gibt es einen Onlinedienst für Ruby-Projekte:
Und Sie können sogar Abzeichen über http://shields.io/ für Ihr Open Source-Projekt erstellen .
Das ist meine Erfahrung, hoffe es hilft jemandem.
quelle