Ideal ruby-Projekt-Struktur
-
03-07-2019 - |
Frage
Ich bin nach einem überblick/Klärung der ideale Projekt-Struktur für ein ruby (non-rails/merb/etc) - Projekt.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?
Lösung
Ich denke, dass ziemlich viel Spot ist auf. Standardmäßig Rubygems das lib-Verzeichnis in das Lastweg, fügen Sie können jedoch ein beliebiges Verzeichnis drücken Sie auf, dass wollen die $ mit: Variable. d.
$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')
Das bedeutet, dass, wenn Sie zu sagen haben, surfer.rb
in diesem Verzeichnis können Sie require "surfer"
überall und die Datei gefunden wird.
Auch als Kongress, Klassen und Singletons erhalten eine Datei und Module erhalten Sie ein Verzeichnis. Zum Beispiel hatten, wenn Sie das LolCatz
Modul und die LolCatz::Moar
Klasse, die aussehen würde:
lib/
appname.rb
lolcatz/
moar.rb
Aus diesem Grund gibt es eine lib / appname Ordner, weil die meisten Bibliotheken im appname
Namespace sind.
Außerdem, wenn Sie den Befehl newgem --simple [projectname]
Versuchen Sie, die schnell ein Gerüst für Sie mit nur dem Nötigsten für ein Ruby-Projekt (und durch die Erweiterung ein Ruby Gem) erzeugen werden. Es gibt auch andere Werkzeuge, die dies tun, ich weiß, aber newgem ist sehr verbreitet. Ich werde in der Regel von der TODO-Datei zu befreien und alle das Skript Zeug.
Andere Tipps
Siehe das folgende Beispiel von http://guides.rubygems.org/what- is-a-Juwel /
% tree freewill
freewill/
├── bin/
│ └── freewill
├── lib/
│ └── freewill.rb
├── test/
│ └── test_freewill.rb
├── README
├── Rakefile
└── freewill.gemspec
ich versuche, die Rails Projektstruktur zu imitieren, weil mein Team, das in der Regel mit Rails befaßt, wird die Struktur besser als eine andere Konfiguration verstehen. Konvention über Konfiguration -. Blutungen über von Rails
Wenn Sie bundler verwenden, dieser Befehl ausgeführt wird bundle gem app_name
wird geben Sie die gleiche Verzeichnisstruktur.
Wenn Sie verwenden möchten rspec anstelle von unit-tests können Sie dann diesen Befehl ausführen rspec --init
(Nur stellen Sie sicher, dass Sie cd app_name
erste)