2014-04-10 6 views
7

Powszechne jest mieć plik version.rb, określające wersję gem, jak:Co korzyści version.rb w Ruby gem

module Foo 
    VERSION = "0.0.1" 
end 

iw pliku .gemspec wymagają wersję .rb i użyj tam Foo :: VERSION.

Jakie korzyści wynikają z tej konwencji?

-

Również kiedyś, gdy jest używany nazw, generowany Verison plik może być głęboko w folderach zagnieżdżonych. Czy nie byłoby łatwiej umieścić plik version.rb bezpośrednio pod biblioteką/i określając tam wersję?

Odpowiedz

2

To zależy od tego, z jakiego budowniczego klejnotów korzystałeś. Posiadanie oddzielnego pliku ułatwia stomp i przebudowę, na przykład, gdy numeruje się wersja wersji z zadaniami rake. jest to o wiele łatwiejsze niż manipulowanie plikiem źródłowym i próbowanie niczego nie uszkodzić.

Niektóre osoby pakujące używają oddzielnego pliku VERSION.

4

Dokonano tego w ten sposób, aby zmniejszyć liczbę rezygnacji (szybkość zmian) w pliku .gemspec. Wyobrażam sobie, że zmiany zależności są znacznie ważniejsze niż zmiany wersji (które są również częstsze). Zmiany wersji spowodowałyby zbyt duży hałas i ukrycie ważnych zatwierdzeń.

+0

Po co zwracać uwagę na wskaźnik zmian gemspec? Tylko po to, aby historia git była czystsza? Nie wydaje mi się to ważne. Myślę, że lepszym powodem jest to, że wiele klejnotów w pewnym momencie chce przeczytać wersję z jakiegoś kodu aplikacji. Na przykład, 'rake --version' odnosi się do' Rake :: VERSION'. –

+0

@ Danielanubarov: Czyszczenie historii zatwierdzeń nie jest dla ciebie ważne? O mój. Twoja sugestia również dobrze się domyśla, ale historia git jest bardzo ważna. Właśnie dlatego przycinamy gałęzie funkcji do jednego lub kilku commitów. –

+1

Osobiście nigdy nie dodawałbym indirect do mojego kodu tylko w celu skrócenia logu git pliku. Polerowany kod jest ważniejszy niż polerowana historia gitów, dla mnie i tak. –

2

Krótko mówiąc, jeśli twój klejnot nie potrzebuje znać aktualnej wersji, to nie potrzebujesz version.rb. Wydarzenie niektórych z dobrze znanych klejnotów, takich jak rack nie używać go.

Powiedzmy budujesz exetable klejnot, który zawiera opcję -v zobaczyć aktualną wersję, albo trzeba wydrukować aktualną wersję, aby ostrzec deweloperom istnieją pewne nieaktualne zmiany, a następnie do require sperated plik wersja jest muchs więcej convinent i wydajniejsze niż parsowanie gemspec.

To po prostu koneksja w społeczności Rubinów. Głównym powodem, dla którego version.rb jest to, gdzie jest mnóstwo kamieni są budowane przez bundler gem.