Назад | Перейти на главную страницу

Можно ли пропустить подтверждение .rvmrc?

Мы используем RVM для управления установками и средами Ruby.

Обычно мы используем это .rvmrc сценарий:

#!/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

Этот скрипт заставляет RVM создавать новую среду гемов для каждого нашего проекта / версии.

Но каждый раз, когда мы развертывали новую версию, RVM просит нас подтвердить новый .rvmrc файл.

Когда мы cd в этот каталог в первый раз мы получаем что-то вроде:

  ===============================================================
  = NOTICE:                                                     =
  ===============================================================
  = RVM has encountered a not yet trusted .rvmrc file in the    =
  = current working directory which may contain nasty code.     =
  =                                                             =
  = Examine the contents of this file to be sure the contents   =
  = are good before trusting it!                                =
  =                                                             =
  = Press 'q' to exit the reader when finished reading the file =
  ===============================================================

  (press enter to continue when ready)

Это не так плохо для сред разработки, но при автоматическом развертывании требуется вручную подтверждать каждую новую версию на каждом сервере.

Можно ли пропустить это подтверждение?

Я нашел эти заметки в блоге Уэйнса, http://wayneeseguin.beginrescueend.com/

В основном, добавляя:

export rvm_trust_rvmrcs_flag=1

к ~/.rvmrc обойдет проверку.

А также есть rvm rvmrc <command> [dir] для ручного доверия / недоверия .rvmrc файлы.

Ищу то же самое, поэтому решил опубликовать решение.

HTH

С Уважением,

Фил

В моем развертывании я не использую .rvmrc. Я использую только rvm use 1.9.2 --default как это я; уверен, что мой рубин по умолчанию - 1.9.2, а не другой, если я не в этом конкретном каталоге.

После с опцией rvm_project_rvmrc=0 убедитесь, что в вашем rvmrc не используются другие рубины.

$ curl -L https://get.rvm.io | bash -s -- --version 1.16.20

$ rvm --version

rvm 1.16.20 (version) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [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

Исправление:

$ sed -i 's/ | less//' .rvm/scripts/cli .rvm/bin/rvm-installer .rvm/src/rvm/scripts/cli .rvm/src/rvm/binscripts/rvm-installer

Альтернативный, но неожиданный выход 0 требует многократного выполнения

например чтобы установить оба ruby ​​(без изменения исходной установки rvm), будет выполнено повторное выполнение

#!/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
)