2016-03-30 22 views
12

każdym razem, kiedy uruchomić dowolną komendę gem w linii poleceń, Bundler podkreśla dotykając mój plik Gemfile.lock dodać tę linię:mogę przestać Bundler dodawania RUBY WERSJA do Gemfile.lock

RUBY VERSION 
    ruby 2.2.2p95 

ja nie wiem chcemy to zrobić w naszym repozytorium, ponieważ oznacza to, że każdy dev używający innego poziomu łaty Ruby 2.2.2 będzie w wojnie ze mną. (Ja już pogodziłem się do podobnego problemu z linią BUNDLED_WITH.) Ale nie mogę wdrożyć chyba zrobić popełnić tę linię, ponieważ nasz wdrożyć biegnie poprzez zadanie natarcia i działa Rozmieszczanie prowadzi Bundler dodać ten blok , przy czym proces wdrożyć mówi „CZEKAJ! Twój drzewo pracy jest brudna! Możesz być niepełne wdrożenie zmian !!!! 1!” (No, może nie dosłownie, ale masz pomysł.)

Mogę powiedzieć Bundler opuścić RUBY VERSION (i, najlepiej, BUNDLED_WITH) z Gemfile.lock więc nie trzeba robić to śmieszny taniec?

(how to prevent bundler from adding platform info to Gemfile.lock wydaje się to samo pytanie, ale nie ma odpowiedzi, wydrą).

Odpowiedz

7

Nie sądzę więc, ale może to dobrze:

Od 2.1.0, Ruby nie ma już komunikatów stwardnienie łaty dla danej wersji. Akceptowane odpowiedź na How do version numbers work for MRI Ruby?

2.2.2p95 jest tylko poziom patch 2.2.2, który nigdy nie będzie wydany. "p95" oznacza po prostu, że od wersji 2.2.0 było 95 zatwierdzeń.

Pomimo tego, że cały zespół będzie w wersji 2.2.2, nie powinno to powodować problemów z pozostawieniem go w pliku Gemfile.lock. (Tak długo, jak wszyscy aktualizują Bundler do wersji, która to robi, w przeciwnym razie, w przeciwnym razie nadal będą występować konflikty w miarę dodawania i usuwania wersji ruby.)

+1

A jednak okazuje się, że dostajemy wojny commitowe, a nie przez wersję Ruby, ale przez różne wersje Bundlerów dodając i usuwając ten blok.* westchnienie * – pjmorse

+0

@pjmorse Myślę, że to dobrze, że wszyscy członkowie zespołu mają tę samą wersję Bundler. Jeśli chcesz zablokować klejnoty, dlaczego nie Bundler? –

+0

@FranklinYu dobre pytanie. Myślę, że ponieważ Bundler to narzędzie programistyczne, a nie bezpośrednia zależność aplikacji, zablokowanie jego wersji jest mniej ważne niż blokowanie wersji klejnotów. (Jeśli twój zespół pracuje nad wieloma aplikacjami, musisz skoordynować zablokowaną wersję programu Bundler w różnych aplikacjach, co może być oporem.) Zasadniczo zobowiązujesz swój zespół do zablokowania aktualizacji programu Bundler.) – pjmorse

-4

Jeśli używasz jakiegoś kontroli wersji Git jak można dodać Gemfile.lock do pliku .gitignore.

W ten sposób w każdej chwili wcisnąć nową zmianę nie podwyższy swój Gemfile.lock. Zwłaszcza, że ​​inni deweloperzy tego nie potrzebują - po uruchomieniu pakietu pakiet utworzy nowy plik Gemfile.lock po ukończeniu.

+5

Cały punkt Gemfile.lock polega na zablokowaniu dokładnych wersji zależności na podstawie wymagań określonych w Gemfile. Zaangażowanie Gemfile.lock jest prawie wymagane, jeśli chcesz odtwarzać środowisko. – jackrabbit

+2

Pozostawienie 'Gemfile.lock' z repozytorium git nie jest opcją. W rzeczywistości * chcemy *, aby wszyscy programiści w naszym zespole korzystali z tych samych wersji wszystkich klejnotów w projekcie. – pjmorse

+0

Widzę, skąd przybywasz z bud, s'all good –

0

Nie, nie można usunąć, przynajmniej w wersja (-y) aktualnego Bundlera, kiedy to piszę.

Ten blok jest dodawany in the #to_lock method z Bundler :: Definition. Jedynym warunkowym, który jest zawarty jest if locked_ruby_version, a locked_ruby_version jest metodą, która zwraca wersję zdefiniowaną w istniejącym pliku blokującym (Gemfile.lock) lub systemie Ruby - Bundler stara się bardzo mocno, aby nie pozwolić, aby locked_ruby_version zwrócił wartość fałszu.