2010-11-29 5 views
2

So verwende ich Jeweler, um eine little gem of mine zu pflegen, und es bietet eine Reihe von praktischen rake version:* Aufgaben für die Verwaltung der Versionsnummer. Jeweler speichert die Versionsnummer anscheinend in einer Datei namens VERSION, die dann unter rake gemspec gelesen wird. Das einzige Problem ist, dass der eigentliche Ruby-Code in der Bibliothek auch enthält eine Version, die z. in HTTP-Anforderungsheader gesendet, die von der Bibliothek erstellt wurden:Synchronisieren Schmuck Juwel Version mit Version Zeichenfolge im Programm selbst

Haben Sie Ideen, diese beiden synchron zu halten? Oder gibt es eine Möglichkeit, wie die MediaWiki-Bibliothek den Edelstein abfragen kann, in den sie gedreht wurde, um ihre eigene Version zu finden?

Antwort

4

Warum haben Sie nicht die Versionsmethode eine Konstante zurückgeben?

# lib/media_wiki/version.rb 
module MediaWiki 
    VERSION = "1.0.6" 
end 

# lib/media_wiki.rb (or wherever) 
module MediaWiki 
    class << self 
    def version 
     MediaWiki::VERSION 
    end 
    end 
end 

EDIT (als Antwort auf Kommentar):

Auch müssen Sie Ihre Rakefile aktualisieren die Konstante zu verwenden:

# Rakefile 
Jeweler::Tasks.new do |gemspec| 
    ... 
    gemspec.version  = MediaWiki::VERSION 
    ... 
end 

Peer

+0

ich konnte, aber wie würde das konstant mit Jewelers Version synchronisiert werden? – jpatokal

+0

Bearbeitete den Beitrag, um das zu beantworten. –

+0

Brilliant! (Und offensichtlich im Nachhinein ... Seufz.) Ich werde nicht in der Lage sein, die Rake-Version zu verwenden: bump: * Aufgaben mehr, aber das ist bei weitem das kleinere Übel. – jpatokal