Ich bin nach einer Übersicht / Klärung der idealen Projektstruktur für ein Ruby-Projekt (Non-Rails / Merb / etc). Ich vermute, es folgt
app/
bin/ #Files for command-line execution
lib/
appname.rb
appname/ #Classes and so on
Rakefile #Running tests
README
test,spec,features/ #Whichever means of testing you go for
appname.gemspec #If it's a gem
Habe ich etwas falsch gemacht Welche Teile habe ich verpasst?
ruby
project-structure
Dylanfm
quelle
quelle
Antworten:
Ich denke, das ist ziemlich genau richtig. Standardmäßig fügt Rubygems das lib-Verzeichnis dem Ladepfad hinzu, aber Sie können jedes gewünschte Verzeichnis mit der Variablen $: in dieses Verzeichnis verschieben. dh
Das heißt, wenn Sie
surfer.rb
in diesem Verzeichnis gesagt haben , können Sierequire "surfer"
überall und die Datei wird gefunden.Außerdem erhalten Klassen und Singletons als Konvention eine Datei und Module ein Verzeichnis. Wenn Sie zum Beispiel das
LolCatz
Modul und dieLolCatz::Moar
Klasse hätten, würde das so aussehen:Aus diesem Grund gibt es einen Ordner lib / appname, da sich die meisten Bibliotheken im
appname
Namespace befinden.Wenn Sie versuchen, den Befehl
newgem --simple [projectname]
auszuführen, der schnell ein Gerüst für Sie generiert, das nur das Nötigste für ein Ruby-Projekt enthält (und im weiteren Sinne ein Ruby Gem). Es gibt andere Tools, die dies tun, ich weiß, aber Newgem ist ziemlich verbreitet. Normalerweise werde ich die TODO-Datei und all das Skript-Zeug los.quelle
lib
es automatisch zum Ladepfad hinzugefügt wird. Ist es eine 1.9 Sache? Ist eine spezielle Konfiguration erforderlich, um dies zu erreichen?bundle gem gem_name
Siehe das folgende Beispiel von http://guides.rubygems.org/what-is-a-gem/
quelle
Ich versuche, die Rails-Projektstruktur nachzuahmen, da mein Team, das sich normalerweise mit Rails befasst, die Struktur besser versteht als eine andere Konfiguration. Konvention über Konfiguration - Überbluten von Schienen.
quelle
Wenn Sie Bundler verwenden, erhalten Sie durch Ausführen dieses Befehls
bundle gem app_name
dieselbe Verzeichnisstruktur.Wenn Sie rspec anstelle von Komponententests verwenden möchten, können Sie diesen Befehl ausführen
rspec --init
(stellen Sie einfach sicher, dass Siecd app_name
zuerst)quelle