RVM - wirtualne środowiska dla Ruby
« Konkurs - zgłoszenia - tani-mebel | Konkurs - zgłoszenia - urstyle »
26 Czerwiec 2011
UWAGA: z nowszą wersją RVMa zmienił się sposób instalacji i konfiguracji. Nowy opis znajduje tutaj
http://www.megiteam.pl/blog/2012/5/7/rvm/
Najczęściej przewijającym się problemem przy uruchamianiu aplikacji w RoR jest niekompatybilność Railsów z określonymi wersjami Racka. Railsy 2.3.5 mają w zależnościach Racka 1.0.x, wersja 2.3.11 zależy od Racka 1.1.x, a 3.0.x od Racka 1.2.x. Problem pojawia się w momencie, gdy na jednym koncie chcesz uruchomić aplikacje napisane w różnych wersjach Railsów. Jeżeli w GEM_PATH masz kilka wersji Racka to Thin załaduje najnowszą, ale Railsy nie uruchomią się z wersją nowszą niż ta, którą mają w zależnościach. Najczęściej objawia się to komunikatem o brakującym gemie Rails, mimo że Railsy w odpowiedniej wersji masz zainstalowane.
Using rails adapter Missing the Rails 2.3.5 gem. Please gem install -v=2.3.5 rails, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
Rozwiązaniem tego problemu jest użycie RVMa - narzędzia do tworzenia wirtualnych środowisk dla Ruby. Instalacja na naszym koncie delikatnie różni się od opisu w dokumentacji tego projektu dlatego przedstawię co krok po kroku należy zrobić, aby korzystać z dobrodziejstw RVMa u nas.
Zaloguj się na konto i wydaj polecenie
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
W ten sposób zainstalujesz RVMa. Do pliku $HOME/.environment dodaj
set +a [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" set -a
i wykonaj
source .bashrc
UWAGA: wpis nie powinien być na końcu pliku; powinien znaleźć się przed linijką
if [ -r ./.environment -a -z "$RECURSE_DOT_ENVIRONMENT" -a -z "$HOME" -o "$HOME" != "$PWD" ]
Dyrektywy set +a, set -a to jedna ze zmian koniecznych u nas. Jeżeli przy logowaniu do konta zobaczysz błąd
/bin/sh: __rvm_rm_rf: line 11: syntax error near unexpected token `('
/bin/sh: __rvm_rm_rf: line 11: ` *(/|.)@(|/Applications|/Developer|/Guides|/Information|/Library|/Network|/System|/User|/Users|/Volumes|/backups|/bdsm|/bin|/boot|/cores|/data|/dev|/etc|/home|/lib|/lib64|/mach_kernel|/media|/misc|/mnt|/net|/opt|/private|/proc|/root|/sbin|/selinux|/srv|/sys|/tmp|/usr|/var))'
/bin/sh: error importing function definition for `__rvm_rm_rf'
/bin/sh: __rvm_ruby_string: line 79: syntax error near unexpected token `('
/bin/sh: __rvm_ruby_string: line 79: ` 0.+([[:digit:]]) | 0.+([[:digit:]]).+([[:digit:]]) | 1.+([[:digit:]]).+([[:digit:]]))'
/bin/sh: error importing function definition for `__rvm_ruby_string'
/bin/sh: __rvm_parse_args: line 348: syntax error near unexpected token `('
/bin/sh: __rvm_parse_args: line 348: ` +([[:digit:]]).+([[:digit:]])*)'
/bin/sh: error importing function definition for `__rvm_parse_args'
to znaczy, że zapomniałeś je dodać.
Teraz możesz zająć się stworzeniem wirtualnego środowiska dla swojej aplikacji. Jeżeli korzystasz z Ruby 1.8.7 zainstalujesz go poleceniem
rvm install 1.8.7
Zmień wersję interpretera na zainstalowaną przed chwilą
rvm use 1.8.7
Sprawdź, czy operacja się udała
$ which ruby /home/xyz/www/.rvm/rubies/ruby-1.8.7-p334/bin/ruby
Jeżeli wszystko ok, to stwórz gemset dla swojej aplikacji
rvm gemset create myapp rvm gemset use myapp
Teraz czas na zainstalowanie potrzebnych gemów (nie zapomnij o Thinie) i uruchomienie aplikacji. Te kroki wykonujesz tak samo, jak bez użycia RVMa. Gemy możesz zainstalować poleceniem gem install lub przez Bundlera. W tym drugim przypadku gemy zostaną zainstalowane w katalogu Bundlera, poza GEM_PATH i Thina oraz jego zależności musisz zainstalować przez gem install (musi być w GEM_PATH). Zwróć uwagę, by wersja Racka zainstalowana z Thinem odpowiadała wersji, którą masz w Gemfile.
W katalogu aplikacji powinny znaleźć się 2 pliki:
- .rvmrc z zawartością
rvm 1.8.7@myapp
- .environment z zawartością
unset BASH_ENV . .rvmrc
Ostatnik krokiem jest dodanie aplikacji w panelu. Jeżeli wszystko będzie w porządku to pod dodaną domeną powinieneś zobaczyć swoją aplikację. Jeżeli jednak aplikacja nie uruchomi się to informacja o przyczynie problemów będzie w pliku /home/TwójLogin/logs/KatalogAplikacji/app.log
Disclaimer: powyższy wpis ma za zadanie pokazać jak w MegiTeam uruchomić aplikację korzystającą z RVMa, nie zastąpi przeczytania dokumentacji tego narzędzia.
Autor: Magda Zarych