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.

Instalacja RVM

Raz zainstalowany RVM można później używać dla wszystkich własnych domen.

 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

Odnośniki zewnętrzne