De basis van een Ruby Gem

Ik gebruik ruby gems nu al een paar weken, en het is geweldig, maar ik was niet echt zeker wat er onder de motorkap gebeurde als ik er een aan mijn applicatie toevoegde. Dus deze blog post is om mij te helpen begrijpen hoe gems werken en hopelijk helpt het jou ook.

Een ruby gem is ingepakte ruby code die je aan je applicatie kunt toevoegen. Dit kan u wat tijd besparen door code te gebruiken die anderen hebben geschreven om vergelijkbare problemen op te lossen. Bijvoorbeeld, als je de kleur van een tekst wilt veranderen, kun je de colorize gem installeren en gebruiken. U krijgt alle functionaliteit zonder ooit zelf die code te hoeven schrijven.

Sinatra is een gem, Rack is een gem, en ik was verrast te leren dat zelfs Rails een gem is. Alle publieke gems worden gepubliceerd via RubyGems.org. Dit is waar mensen kunnen bijdragen en ze delen met de gemeenschap.

Let’s start by installing a gem

Kies een gem en laten we het installeren. Ik heb gekozen om de colorize gem aan mijn applicatie toe te voegen, die de kleur verandert van een string die we invoeren. U kunt gem install gem_name uitvoeren om de gem naar uw computer te downloaden en hem beschikbaar te maken voor uw applicaties. Benieuwd waar die gem woont nadat hij geïnstalleerd is? U kunt gem which gem_name uitvoeren en het zal u precies vertellen waar het is.

gem install colorize

Om de gem in onze code te gebruiken moet u de gem bovenaan uw bestand vereisen door require ‘gem_name’ te zetten. Dit doen we zodat we toegang hebben tot de gem en nu niet onze eigen code hoeven te schrijven om tekst in te kleuren.

require ‘colorize’

Nu u de gem geïnstalleerd en vereist heeft, kunt u deze gebruiken. Als u naar de GitHub-repo van de gem gaat, vindt u belangrijke informatie over de functies en hoe u deze kunt gebruiken.

https://github.com/fazibear/colorize

Lets’s use it!

Dus we hebben de readme gelezen en nu willen we wat kleur aan onze tekst toevoegen. Ik heb drie verschillende kleuren toegevoegd in mijn code, door .colorze(:color) aan te roepen op een string.

Het uitvoeren van de code

Geweldig! Ziet dat er niet mooi uit? We hebben onze gem geïnstalleerd en het lijkt te werken, maar wat als we een grotere toepassing hebben die veel gems vereist? Gem install aanroepen en elke gem installeren lijkt veel werk. Er is toch zeker een makkelijkere manier.

Bundler

Bundler maakt ons leven een stuk makkelijker. Wat is bundler? Nou, het is een juweeltje natuurlijk! Het traceert elke gem en installeert de exacte gem en versie die je nodig hebt in je applicatie. Om bundler te gebruiken, heb je een Gemfile nodig in de directory van je project en daarin kun je zoveel gems plaatsen als je wilt. Om dat te doen, open je de Gemfile en voeg je gem ‘gem_name’.

Als je het eenmaal hebt toegevoegd aan je Gemfile, zorg er dan voor dat je bundle install uitvoert in je terminal. Dit zal alle edelstenen installeren die in je Gemfile staan, samen met hun afhankelijkheden. Dat maakt de dingen zeker veel gemakkelijker. Wat geweldig is, is dat Ruby 2.6 en later automatisch bundler bevat, dus je hoeft het niet zelf te installeren.

Het lijkt erop dat we nog steeds require ‘gem_file’ moeten toevoegen bovenaan onze bestanden, en dat lijkt ook een hoop werk als we er veel hebben. Het blijkt dat bundler hier ook aan gedacht heeft. Je kunt ‘bundler’ bovenaan je .rb bestand zetten en Bunlder.require(:default) schrijven. Wat dit onder de motorkap doet is ‘gem_name’ aanroepen voor elke gem die je in je gemfile hebt staan.

Bundler.require(:default)

Als je eenmaal bundle install hebt gedraaid, zul je merken dat een hoop gems die je niet hebt toegevoegd worden geïnstalleerd. Waarom is dat? Veel gems vereisen dat andere gems worden meegeïnstalleerd. Bijvoorbeeld, rails zal vele andere gems vereisen en die gems kunnen weer andere gems vereisen enzovoort. Bundler zal ervoor zorgen dat alle geïnstalleerde gem versies compatibel zijn met elkaar.

Na het vinden van de juiste versies van elke gem, registreert het die versies in een ander bestand genaamd Gemfile.lock. Dit maakt het mogelijk om exact dezelfde versie te installeren op elke machine die deze applicatie moet draaien.

Een Gemfile.lock bestand

Je kunt in mijn Gemfile.lock zien dat lolize de paint gem nodig heeft en de versies die het kan gebruiken. Dus bundler zal die en de juiste versie voor ons pakken. Is dat niet behulpzaam? Bedankt bundler!

Dus dat was het! Ik hoop dat dit je heeft geholpen de basis van een gem en bundler te begrijpen. Er zijn veel gems die je kunt gebruiken en je kunt ze hier zoeken. https://rubygems.org/.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.