RVM
RVM to platforma przeznaczona do zarządzania wieloma instalacjami interpretatora Ruby. Użycie RVM ma kilka korzyści, przede wszystkim możliwość ustalenia własnych gemów i ich aktualizacji do wybranych przez siebie wersji.
Spis treści
Instalacja RVM
Raz zainstalowany RVM można później używać dla wszystkich własnych domen.
Przed instalacją należy aktywować opcję binexec i przelogować się.
$ curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - $ curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - $ curl -sSL https://get.rvm.io | bash -s stable (...) # Thank you for using RVM! # We sincerely hope that RVM helps to make your life easier and more enjoyable!!! # # ~Wayne, Michal & team. In case of problems: http://rvm.io/help and https://twitter.com/rvm_io $ source .rvm/scripts/rvm
Instalacja interpretera Ruby
Po wykonaniu polecenia rvm list known
pojawi się między innymi lista dostępnych wersji interpretera Ruby, która znajduje się w sekcji MRI Rubies. Do instalacji należy użyć polecania
$ rvm install 3.2.4 --autolibs=disabled (...) Install of ruby-3.2.4 - #complete Ruby was built without documentation, to build it run: rvm docs generate-ri $ gem install bundler (...) 1 gem installed
Instalacja interpretera Ruby 2.7.8
Jeżeli twoje oprogramowanie nadal używa Ruby 2.X to rozważ aktualizację swojej aplikacji. Ruby 2.7.8 jest ostatnią wersją z linii 2.7 i jego wsparcie przez autorów Ruby zostało zakończone 31 marca 2023 roku. Poniżej wskazujemy sposób uruchomienia Ruby 2.7.8 ale nie gwarantujemy, że będzie on w przyszłości aktualny jak nie gwarantujemy jego działania.
Należy utworzyć plik tekstowy util.patch z zawartością:
--- util.c.orig 2022-04-12 11:25:48 UTC +++ util.c @@ -210,6 +210,7 @@ typedef int (cmpfunc_t)(const void*, const void*, void typedef int (cmpfunc_t)(const void*, const void*, void*); +#if !defined HAVE_GNU_QSORT_R #if defined HAVE_QSORT_S && defined RUBY_MSVCRT_VERSION /* In contrast to its name, Visual Studio qsort_s is incompatible with * C11 in the order of the comparison function's arguments, and same @@ -255,7 +256,7 @@ ruby_qsort(void* base, const size_t nel, const size_t qsort_s(base, nel, size, cmp, d); } # define HAVE_GNU_QSORT_R 1 -#elif !defined HAVE_GNU_QSORT_R +#else /* mm.c */ #define mmtype long @@ -521,7 +522,8 @@ ruby_qsort(void* base, const size_t nel, const size_t else goto nxt; /* need not to sort both sides */ } } -#endif /* HAVE_GNU_QSORT_R */ +#endif +#endif /* !HAVE_GNU_QSORT_R */ char * ruby_strdup(const char *str)
następnie wydać polecenie:
$ rvm install 2.7.8 --autolibs=disabled --patch util.patch --with-openssl-dir=/usr/local/openssl-unsafe
Zmienne
Ustawianie zmiennej z poziomu SSH z widocznością dla aplikacji uruchamianej przez Passengera:
- Dopisanie zmiennych do ~/.bash_profile (np. export TESTENV=1).
- Ważne: zmienne nie działają z ~/.bashrc i ~/.shrc
Przebudowa
Ruby:
$ rvm reinstall ruby-X.X.X --autolibs=disabled
gdzie X.X.X to używana wersja Ruby w RVM.
Gemów:
$ gem pristine --all