wake-up-neo.net

Ideal Ruby Projektstruktur

Ich bin nach einer Übersicht/Klärung der idealen Projektstruktur 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?

118
dylanfm

Ich denke, das ist ziemlich genau richtig. Standardmäßig fügt Rubygems das Verzeichnis lib zum Ladepfad hinzu. Sie können jedoch jedes gewünschte Verzeichnis mit der Variablen $: in dieses Verzeichnis verschieben. d.h.

$:.Push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')

Das heißt, wenn Sie sagen, surfer.rb In diesem Verzeichnis können Sie require "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 Modul LolCatz und das Modul LolCatz::Moar Klasse, die so aussehen würde:

lib/
  appname.rb
  lolcatz/
    moar.rb

Aus diesem Grund gibt es einen Ordner lib/appname, da sich die meisten Bibliotheken im Namespace appname befinden.

Wenn Sie außerdem versuchen, den Befehl newgem --simple [projectname] das wird schnell ein Gerüst für Sie mit nur dem Nötigsten für ein Ruby Projekt (und als Erweiterung ein Ruby Gem). Es gibt andere Tools, die dies tun, ich weiß, aber Newgem ist ziemlich verbreitet.Ich werde normalerweise die TODO-Datei und all das Skript-Zeug los.

86
Chris Lloyd

Siehe folgendes Beispiel von http://guides.rubygems.org/what-is-a-gem/

 % tree freewill
    freewill/
    ├── bin/
    │   └── freewill
    ├── lib/
    │   └── freewill.rb
    ├── test/
    │   └── test_freewill.rb
    ├── README
    ├── Rakefile
    └── freewill.gemspec
9
Sam Shiles

Ich versuche die Rails Projektstruktur nachzuahmen, weil mein Team, das sich normalerweise mit Rails befasst, die Struktur besser versteht als eine andere Konfiguration. Konvention über Konfiguration - Überlaufen von Rails.

6
berlin.ab

Wenn Sie einen Bundler verwenden, führen Sie den folgenden Befehl aus: bundle gem app_name gibt Ihnen die gleiche Verzeichnisstruktur.

Wenn Sie rspec anstelle von Komponententests verwenden möchten, können Sie den folgenden Befehl ausführen: rspec --init (Stelle nur sicher, dass du cd app_name zuerst)

1
8bithero