Czy można pominąć potwierdzenie .rvmrc?

16

Używamy RVM do zarządzania instalacjami i środowiskami Ruby.

Zwykle używamy tego .rvmrcskryptu:

#!/bin/bash
if [ ! -e '.version' ]; then
  VERSION=`pwd | sed 's/[a-z/-]//g'`
  echo $VERSION > .version
  rvm gemset create $VERSION
fi
VERSION=`cat .version`
rvm use 1.9.2@$VERSION

Ten skrypt zmusza RVM do utworzenia nowego środowiska klejnotów dla każdego naszego projektu / wersji.

Ale za każdym razem, gdy wdrażaliśmy nową wersję, RVM prosi nas o potwierdzenie nowego .rvmrc pliku.

Gdy cdprzechodzimy do tego katalogu po raz pierwszy, otrzymujemy coś takiego:

  ================================================== =============
  = UWAGA: =
  ================================================== =============
  = RVM napotkał jeszcze niezaufany plik .rvmrc w =
  = bieżący katalog roboczy, który może zawierać nieprzyjemny kod. =
  = =
  = Sprawdź zawartość tego pliku, aby upewnić się, że zawartość =
  = są dobre, zanim im zaufasz! =
  = =
  = Naciśnij „q”, aby wyjść z czytnika po zakończeniu odczytu pliku =
  ================================================== =============

  (naciśnij klawisz Enter, aby kontynuować, gdy będzie gotowy)

Nie jest to takie złe dla środowisk programistycznych, ale w przypadku automatycznego wdrażania wymaga ręcznego potwierdzenia każdej nowej wersji na każdym serwerze.

Czy można pominąć to potwierdzenie?

Wiaczesław Molokov
źródło

Odpowiedzi:

24

Te notatki znalazłem na blogu Waynes, http://wayneeseguin.beginrescueend.com/

Zasadniczo dodając:

export rvm_trust_rvmrcs_flag=1

do ~/.rvmrcominie czeku.

Istnieje również rvm rvmrc <command> [dir]możliwość ręcznego ufania / nieufania .rvmrcplikom.

Szukam tego samego, więc pomyślałem, że opublikuję rozwiązanie.

HTH

Pozdrowienia,

Phil

PhilT
źródło
Dokładnie to, czego potrzebowałem!
b01
3

W moim wdrożeniu nie używam .rvmrc. Używam tylko w rvm use 1.9.2 --defaultten sposób; upewnij się, że mój domyślny ruby ​​to 1.9.2, a nie inny, jeśli nie ma mnie w tym konkretnym katalogu.

Po rvm_project_rvmrc=0wybraniu opcji w twoim rvmrc masz pewność, że nie używasz już innego rubinu.

shingara
źródło
0
$ curl -L https://get.rvm.io | bash -s -- --version 1.16.20

$ rvm --version

rvm 1.16.20 (version) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]

$ grep less .rvm/scripts/cli .rvm/bin/rvm-installer .rvm/src/rvm/scripts/cli .rvm/src/rvm/binscripts/rvm-installer
.rvm/scripts/cli:            } | less
.rvm/bin/rvm-installer:    } | less
.rvm/src/rvm/scripts/cli:            } | less
.rvm/src/rvm/binscripts/rvm-installer:    } | less

Poprawka:

$ sed -i 's/ | less//' .rvm/scripts/cli .rvm/bin/rvm-installer .rvm/src/rvm/scripts/cli .rvm/src/rvm/binscripts/rvm-installer
zwycięzca
źródło
Przeglądam tę „późną odpowiedź” i myślę, że dobrze, że odpowiedziałeś na to pytanie. Jedyne ulepszenie, jakie mogłem wymyślić, to wyjaśnienie zmian, jakie wprowadziłaby komenda sed.
eckes
0

Alternatywne, ale nieoczekiwane wyjście 0 wymaga wielokrotnego wykonania

np. aby zainstalować oba ruby ​​(bez zmiany oryginalnej instalacji rvm), powtórzy się wykonanie

#!/bin/bash
rvm list | grep ree-1.8.7-2011.12 ||
(  
    rvm install ree-1.8.7-2011.12 &  
    expect "^Press 'q' to continue."  
    send "q\n"
    exp_continue
)

rvm list | grep ruby-1.9.3-p194 ||
(
    rvm install ruby-1.9.3-p194 &
    expect "^Press 'q' to continue."
    send "q\n"
    exp_continue
)
zwycięzca
źródło
Co miałeś na myśli ze swoją odpowiedzią? Co robi ten kod? @ PhilT już odpowiedział na to pytanie.
Viacheslav Molokov,