2014-04-10 2 views
7

Es ist üblich, eine version.rb-Datei zu haben, die Version des Juwel definieren, wie:Was den Nutzen von version.rb in Ruby Juwel ist

module Foo 
    VERSION = "0.0.1" 
end 

und in der .gemspec Datei benötigen die Version .rb und benutze dort Foo :: VERSION.

Was ist der Vorteil dieser Konvention?

-

auch irgendwann, wenn Namespace verwendet wird, kann die erzeugte verison Datei tief in verschachtelten Ordnern. Wäre es nicht einfacher, eine version.rb direkt unter lib/zu platzieren und dort die Version anzugeben?

Antwort

2

Es hängt davon ab, welchen Edelstein-Generator Sie verwendet haben. Eine separate Datei erleichtert das Stempeln und Wiederherstellen, wenn Sie beispielsweise Versionsnummern mit rake Aufgaben stossen. Das ist viel einfacher, als mit einer Quelldatei zu hantieren und nichts zu beschädigen.

Einige Packer verwenden eine separate Datei VERSION.

4

Dies wird auf diese Weise durchgeführt, um die Abwanderung (Änderungsrate) in der .gemspec-Datei zu reduzieren. Ich stelle mir vor, dass Abhängigkeitsänderungen viel wichtiger sind als Versionsbumps (die auch häufiger sind). Versionsänderungen würden also zu viel Rauschen hinzufügen und wichtige Commits verbergen.

+0

Warum sollten Sie die Änderungsrate der Gemspec beachten? Nur um seine Git Geschichte sauberer zu halten? Es scheint mir nicht wichtig. Ich denke, ein besserer Grund ist, dass viele Edelsteine ​​die Version irgendwann aus irgendeinem Anwendungscode lesen wollen. Zum Beispiel bezieht sich "Rake - Version" auf "Rake :: VERSION". –

+0

@DanielLubarov: Clean commit Geschichte ist dir nicht wichtig? Oh mein. Ihr Vorschlag ist auch eine gute Vermutung, aber git Geschichte ist ziemlich wichtig. Deshalb zerquetschen wir Feature-Zweige in ein oder wenige Commits. –

+1

Persönlich würde ich niemals Indirektion zu meinem Code hinzufügen, nur um das Gitprotokoll einer Datei zu kürzen. Polierter Code ist wichtiger für mich als polierte Gitgeschichte. –

2

Kurz gesagt, wenn Ihr Juwel nicht die aktuelle Version selbst wissen muss, dann brauchen Sie keine version.rb. Event einige der bekannten Edelsteine ​​wie rack verwenden es nicht.

Angenommen, Sie ein exetable Juwel bauen, die eine Option enthält -v die aktuelle Version zu sehen, oder Sie müssen aktuelle Version drucken, um Entwickler zu warnen gibt es einige veraltete Änderungen, dann require eine sperated Version Datei ist muchs convinent und effizienter als die Gemspec analysieren.

Es ist nur eine Vereinbarung in Ruby-Community. Der Hauptgrund warum version.rb überall ist, ist, dass viele Edelsteine ​​von bundler gem gebaut werden.

Verwandte Themen