Podstawy Ruby Gem

Używam rubinowych klejnotów od kilku tygodni i jest to świetne, ale nie byłem pewien co się dzieje pod maską kiedy dodaję jeden do mojej aplikacji. Więc ten wpis na blogu ma pomóc mi zrozumieć, jak działają klejnoty i mam nadzieję, że pomoże również Tobie.

Klejnot ruby to spakowany kod ruby, który możesz dodać do swojej aplikacji. Może to zaoszczędzić trochę czasu dzięki użyciu kodu, który inni napisali, aby rozwiązać podobne problemy. Na przykład, jeśli chcesz zmienić kolor tekstu, możesz zainstalować i użyć gem colorize. Otrzymasz całą jego funkcjonalność bez konieczności pisania tego kodu samodzielnie.

Sinatra jest klejnotem, Rack jest klejnotem, i byłem zaskoczony dowiadując się, że nawet Rails jest klejnotem. Wszystkie publiczne klejnoty są publikowane poprzez RubyGems.org. To właśnie tam ludzie mogą je współtworzyć i dzielić się nimi ze społecznością.

Zacznijmy od zainstalowania gema

Wybierz gema i zainstalujmy go. Ja zdecydowałem się dodać do mojej aplikacji gem colorize, który zmienia kolor podawanego przez nas ciągu znaków. Możesz uruchomić gem install gem_name, aby pobrać gem na swój komputer i udostępnić go swoim aplikacjom. Zastanawiasz się gdzie ten gem mieszka po zainstalowaniu? Możesz uruchomić gem which gem_name i on powie ci dokładnie gdzie on jest.

gem install colorize

Aby użyć gema w naszym kodzie, będziesz musiał wymagać gema na górze swojego pliku poprzez umieszczenie require ‘gem_name’. Robimy to, abyśmy mieli dostęp do gema i nie musieli pisać własnego kodu do kolorowania tekstu.

require ‘colorize’

Teraz, gdy masz zainstalowanego i wymaganego gema, możesz go użyć. Zazwyczaj, jeśli przejdziesz do repo klejnotu na GitHub, znajdziesz ważne informacje na temat jego funkcji i jak ich używać.

https://github.com/fazibear/colorize

Użyjmy go!

Więc przeczytaliśmy readme i teraz chcemy dodać trochę koloru do naszego tekstu. W moim kodzie dodałem trzy różne kolory, wywołując .colorze(:color) na łańcuchu znaków.

Uruchamianie kodu

Świetnie! Czyż to nie wygląda ładnie? Więc zainstalowaliśmy nasz gem i wygląda na to, że działa, ale co jeśli mamy większą aplikację, która wymaga wielu gemów? Wywołanie gem install i wymaganie każdego z gemów wydaje się być dużo pracy. Z pewnością istnieje łatwiejszy sposób.

Bundler

Bundler sprawia, że nasze życie jest o wiele łatwiejsze. Czym jest bundler? Cóż, jest to oczywiście klejnot! Śledzi każdy gem i instaluje dokładnie ten gem i wersję, której potrzebujesz do swojej aplikacji. Aby móc używać bundlera, musisz mieć Gemfile w katalogu swojego projektu, a w nim możesz umieścić dowolną ilość klejnotów. Aby to zrobić, wystarczy otworzyć Gemfile i dodać gem ‘gem_name’.

Po dodaniu go do Gemfile, upewnij się, że uruchomiłeś bundle install w swoim terminalu. To zainstaluje wszystkie klejnoty wymienione w twoim Gemfile, wraz z ich zależnościami. To z pewnością czyni rzeczy o wiele łatwiejszymi. Co więcej, Ruby 2.6 i późniejsze zawierają bundlera automatycznie, więc nie będziesz musiał instalować go samodzielnie.

Wydaje się, że nadal musimy dodawać require ‘gem_file’ na górze naszych plików, a to również wydaje się być dużo pracy jeśli mamy ich wiele. Okazuje się, że bundler również o tym pomyślał. Możesz dodać require ‘bundler’ na górze swojego pliku .rb i napisać Bunlder.require(:default). To co to robi pod maską to wywołanie require ‘gem_name’ dla każdego klejnotu, który masz w swoim gemfile.

Bundler.require(:default)

Po uruchomieniu bundle install, możesz zauważyć, że wiele klejnotów, których nie dodałeś jest instalowanych. Dlaczego tak jest? Wiele klejnotów wymaga innych klejnotów do zainstalowania razem z nimi. Na przykład, rails będzie wymagał wielu innych klejnotów, a te z kolei mogą wymagać innych klejnotów i tak dalej. Bundler upewni się, że wszystkie zainstalowane wersje gemów są ze sobą kompatybilne.

Po znalezieniu poprawnych wersji każdego gema, zapisuje te wersje w innym pliku o nazwie Gemfile.lock. Umożliwia to zainstalowanie dokładnie tej samej wersji na każdej maszynie, która będzie musiała uruchomić tę aplikację.

Plik Gemfile.lock

W moim Gemfile.lock widać, że lolize wymaga klejnotu paint i wersji, których może używać. Więc bundler złapie to i poprawną wersję dla nas. Czy to nie jest pomocne? Dzięki bundler!

Więc to jest to! Mam nadzieję, że to pomogło ci zrozumieć podstawy gemów i bundlera. Istnieje wiele klejnotów, których możesz użyć i możesz ich poszukać tutaj. https://rubygems.org/.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.