2009-10-14 3 views
6

In Bezug auf diese Frage: Ideal ruby project structure Ich habe festgestellt, dass appname.rb ist in lib, und ist oberste Ebene.Was ist die <appname> .rb-Datei in/lib, die normalerweise in einem Ruby-Projekt verwendet wird?

Ich habe ein wenig vom Rake-Quellcode auf Github gelesen, und ich habe bemerkt, dass ihre Projektstruktur ziemlich gleich ist. Sie haben eine Top-Level 'Rake.rb' Datei in/lib, aber ich bin mir nicht sicher, wofür es da ist. In der Spitzhacke (Programming Ruby 1.9) zeigen sie ein Beispiel für die Strukturierung eines kleinen Projekts, mit fast der gleichen Verzeichnisstruktur oben, aber es wird nicht erwähnt, dass eine .rb in/lib verwendet wird.

Also, meine Frage ist: Was genau ist dieses Ding in der Regel in einem Ruby-Projekt verwendet?

Sorry, wenn das eine dumme Frage ist, bin ich mir sicher, aber ich bin relativ neu in Ruby. Ich kenne Ruby-foo gerade nicht so gut. ;)

Danke.

+0

wie eine wirklich gute Frage für mich aussieht! –

Antwort

5

Normalerweise (und sicherlich im Beispiel von Rake) die appname.rb Datei ist eine Verknüpfung, um eine Menge anderer Dateien zu erfordern. Wenn Sie sich diese Datei im Rake-Projekt auf GitHub anschauen, werden meist Dateien im Verzeichnis benötigt, und Module müssen nach Bedarf hinzugefügt werden. Diese Datei lässt Sie require 'rake' ohne zu wissen, was einzelne Dateien Rake braucht.

+0

Oh, ich verstehe! Danke, Emily. – Rayne

4

Aufbauend auf Emily's answer:

Einige Projekte machen einen autoload anstelle eines require in dieser Datei. Letzterer wird tatsächlich alle Klassen laden, während ersterer dem Klassenlade-System einfach sagt, wie man sie findet, wenn Sie sie ohne eine eigene -Anweisung referenzieren.

So würde das Muster wie folgt aussehen:

# in foo_project/lib/foo.rb: 
module Foo 
    autoload :Bar, 'foo/bar' 
    autoload :Baz, 'foo/baz' 
end 

# in foo_project/lib/foo/bar.rb: 
module Foo 
    class Bar 
    ... 
end 

# in foo_project/lib/foo/baz.rb: 
module Foo 
    class Baz 
    ... 
end 

Dann in Ihrem Projekt, können Sie Folgendes tun können:

+0

Ich habe gehört, aber nie benutzt, automatisches Laden. Das ist ordentlich! – Emily

Verwandte Themen