40 beste ruby ​​edelstenen waar we niet zonder kunnen

Oorspronkelijk werd dit artikel gepost op Codica Blog.

Tegenwoordig hebben webontwikkelaars toegang tot kant-en-klare oplossingen in plaats van de functies helemaal opnieuw te schrijven, wat natuurlijk een grote positieve invloed heeft op de snelheid van ontwikkeling.

Als we vanuit dit oogpunt naar Ruby kijken, valt het op door uitgebreide bibliotheken die Ruby-edelstenen worden genoemd. Ze bieden specifieke functionaliteiten voor Ruby-applicaties die u opbouwt. Stel dat u een authenticatiefunctie in uw programma wilt hebben - u hoeft er geen te schrijven, u kunt het krijgen in de vorm van een juweel. En dit is slechts een voorbeeld van duizenden gratis Ruby-edelstenen.

In dit artikel gaan we de beste Ruby-edelstenen ontdekken die we gebruiken bij webontwikkeling bij Codica, en welke specifieke taken elk van hen ons helpt uitvoeren.

Een robijnrode edelsteen: wat zit erachter?

Elk juweel bevat een bepaald element van functionaliteit, inclusief alle bestanden met betrekking tot deze functionaliteit. Met Ruby-edelstenen vindt u bijna een oplossing voor elke taak, waardoor de tijd die u nodig hebt voor webontwikkeling aanzienlijk wordt verkort.

Deze bibliotheken hebben hun eigen opslag genaamd RubyGems en een pakketbeheerder - gembundler. Beiden bevatten tools om de installatie van edelstenen en een server voor hun distributie gemakkelijk te verwerken. De eerste versie van RubyGems werd uitgebracht in 2004.

Een robuuste community is een van Ruby-troeven. De meest proactieve Ruby-enthousiastelingen vinden oplossingen met één hand en implementeren deze in code. Dan voegen ze deze bibliotheken samen in open source, en dat is waar het leven van edelstenen begint.

Op het moment dat dit artikel werd gemaakt, was het totale aantal edelstenen meer dan 148.782.

Bron: Rubygems.org

Zo'n aantal kant-en-klare oplossingen elimineert de noodzaak om "het wiel opnieuw uit te vinden" elke keer dat u voor een uitdaging staat. Omdat ze in vrije toegang zijn, zijn er al veel functies geschreven die alle ontwikkelingsaspecten dekken: van het waarborgen van codekwaliteit tot implementatie.

Top Ruby-edelstenen die we gebruiken

Of we nu een MVP bouwen voor een startup of een multidomein financieel analyseplatform herstructureren, Ruby-edelstenen dienen ons als een solide achtergrond.

We hebben een lijst met coole Ruby-edelstenen opgesteld, die slechts een klein deel zijn van alle edelstenen die ons helpen geweldige producten te bouwen.

Code kwaliteit

Een van de basiskenmerken van de code is de kwaliteit en eenvoud ervan. Het heeft rechtstreeks invloed op de snelheid en prestaties van een applicatie. Om omvangrijke codeblokken te ontdekken en te verwijderen en om correct te refactoren, gebruiken we twee bibliotheken.

Rubocop is een hulpmiddel voor het analyseren en opmaken van Ruby statische code. Out of the box zal het veel van de richtlijnen afdwingen die in de community Ruby Style Guide zijn beschreven. RuboCop is uiterst flexibel en de meeste aspecten van zijn gedrag kunnen worden aangepast via verschillende configuratie-opties. Afgezien van het melden van problemen in uw code, kan RuboCop ook automatisch enkele problemen voor u oplossen.

Overcommit is een juweeltje voor het configureren van Git hooks. Het is uitstekend om de codekwaliteit hoog te houden. Het maakt het mogelijk om git hooks af te stemmen voor linters voor elke commit.

debugging

Hoe hoog de codekwaliteit ook is, soms zijn bugs en fouten onvermijdelijk. Om bugs te ontdekken en te elimineren, vindt ons team de volgende edelstenen behoorlijk nuttig.

Better_errors is een juweeltje om fouten te tonen. Het geeft nuttige informatie over een fout weer en heeft een uitstekende visuele impact. Better_errors vervangt de standaardfoutpagina van Rails. Het wordt ook buiten Rails in elke Rack-app toegepast als Rack-middleware.

Byebug is een eenvoudig te gebruiken en functierijke debugger voor Ruby. Met dit juweeltje kun je regel voor regel code uitvoeren, pauzeren tussen taken en code uitvoeren, de variabelen onderweg wijzigen.

testen

Webontwikkelingsproces is onmogelijk zonder kwaliteitscontrole van de gemaakte applicatie. Hier komt testen, waarmee u de kwaliteit kunt beoordelen. Om tests soepel uit te voeren en te beheren, gebruikt ons team de volgende hulpprogramma's.

RSpec stelt voor Gedragsontwikkeling voor Ruby. Het juweeltje biedt normen voor het testen van Ruby on Rails-apps. Het biedt beter leesbare DSL in vergelijking met de standaard testbibliotheek van TestUnit. Verder kan het gemakkelijk worden geïntegreerd met vele andere edelstenen die het testproces vergemakkelijken.

Capybara is een acceptatietestraamwerk voor webapplicaties. Het loopt perfect samen met RSpec. De edelsteen is verantwoordelijk voor geïntegreerde tests die de acties van gebruikers in een browser nabootsen. Hiermee kunt u het autorisatiescenario in enkele regels beschrijven (ga naar de startpagina, voer een login en wachtwoord in, klik op de knop Inloggen) en stel vervolgens verschillende handige methoden voor het debuggen van tests voor.

Capybara Screenshot is een juweeltje voor het automatisch opslaan van screenshots als een Capybara-scenario uitvalt. Samen met Capybara en Komkommer, RSpec of Minitest laat het juweel de broncode zien en maakt een screenshot (indien relevant) voor elke fout in een testpakket. Het slaat HTML op voor de mislukte pagina en een screenshotafbeelding (bij gebruik van capybara-webkit, Selenium of poltergeist). Een dergelijke optie is vrij waardevol wanneer u een probleem moet vinden in mislukte rondes.

Parallel_tests zorgt ervoor dat tests die zijn geschreven in TestUnit, RSpec en Komkommer sneller worden uitgevoerd en ze parallel uitvoeren op meerdere CPU's. Om het proces te versnellen, gebruikt de code alle kernen van de systemen. Het voert de test uit en gebruikt extra testdatabases. De edelsteen ondersteunt rails en andere Ruby-kaders.

Factory Bot is een bibliotheek voor het instellen van Ruby-objecten als testgegevens. Het heeft een duidelijke definitiesyntaxis. De bibliotheek onderhoudt meerdere buildstrategieën zoals opgeslagen exemplaren, niet-opgeslagen exemplaren, kenmerkhashes en samengevoegde objecten. Het biedt ook ondersteuning voor verschillende fabrieken voor dezelfde klasse (gebruiker, admin_user), inclusief fabrieksovername.

Chromedriver_helper biedt eenvoudige installatie en gebruik van chromedriver. Bovendien dient het als de selenium-webdriveradapter van het Chromium-project. Het installeert een uitvoerbare chromedriver-helper in een edelsteenpad, waardoor Selenium het kan oproepen als webstuurprogramma. Indien nodig, downloadt het scenario de relevante binary voor een platform en installeert het in ~ / .chromedriver-helper, en voert het vervolgens uit. Hier laat de edelsteen bepaalde projecten zelfs toe om te selecteren welke versie van chromedriver ze willen uitvoeren.

Shoulda Matchers is een juweeltje dat eenvoudige tests met één voering biedt voor de algemene Rails-functionaliteit die het schrijven van de tests voor een typische capaciteit versnelt.

Simplecov is een van de nuttige edelstenen voor het testen. Het toont het percentage code bedekt met unit-tests. Het juweel moedigt ontwikkelaars dus aan om 100% geteste code te schrijven, wat de kwaliteit ervan aanzienlijk ten goede komt.

Database Cleaner biedt codedekking voor Ruby 1.9+ met een krachtige configuratiebibliotheek en automatische samenvoeging van dekking tussen testpakketten. Het wordt vaak toegepast in combinatie met RSpec en wordt gebruikt om een ​​testdatabase op te schonen bij het starten van tests. Met de edelsteen kan de tijd voor het opschonen van de database worden aangepast: voordat de tests worden gestart, voordat / na elke test wordt uitgevoerd.

RSpec :: Retry is een tool die zorgt voor: probeer willekeurig willekeurig RSpec opnieuw te proberen. Het voegt een: opnieuw proberen-optie toe voor af en toe falende RSpec-patronen. Als een model de optie: opnieuw proberen heeft, zal RSpec het voorbeeld een bepaald aantal keren opnieuw proberen totdat het patroon werkt.

Faker is een bibliotheek voor het genereren van demogegevens zoals namen, adressen en telefoonnummers.

Deployment

Implementatie is een belangrijk stadium van webontwikkeling en er is één bibliotheek die ons helpt het proces soepel te laten verlopen.

Mina is een snelle implementator en server automatiseringstool. In vergelijking met Capistrano, een hulpprogramma voor serverautomatisering op afstand, werkt Mina veel sneller. Het genereert een volledige procedure als een Bash-script en voert het op afstand uit op de server. In tegenstelling tot Capistrano, waarbij elke opdracht afzonderlijk wordt uitgevoerd op hun eigen SSH-sessies, maakt Mina één SSH-sessie per implementatie. Het minimaliseert de SSH-verbinding werklast.

Overigens hebben we bij Codica onze eigen tool voor Mina gebouwd, die mina-multideploy wordt genoemd. Hiermee kunnen applicaties op meerdere servers parallel worden ingezet.

Authenticatie en authorisatie

De meeste weboplossingen vereisen een authenticatie- en autorisatiesysteem. Of het nu gaat om een ​​e-commerce-site of een publicatieplatform, de gegevensbescherming van gebruikers staat altijd op de eerste plaats. Om een ​​veilige oplossing te implementeren, gebruiken we verschillende edelstenen.

Devise is een flexibele authenticatie-oplossing voor Rails op basis van Warden. Devise helpt bij het bouwen van een identificatiesysteem van elk complexiteitsniveau - van authenticatie via e-mail en wachtwoord tot een verwijzingssysteem. Kortom, het heeft 10 modules, waaronder:

  • Bevestigbaar: verzendt e-mails met bevestigingsinstructies en verifieert of een account al is bevestigd tijdens het inloggen;
  • Herstelbaar: reset het gebruikerswachtwoord en verzendt reset-instructies;
  • Herinnerbaar: beheert token genereren en wissen om de gebruiker te onthouden van een opgeslagen cookie;
  • Trackable: traceert inlogaccount, tijdstempels en IP-adres.

Ruby-JWT gem is een eenvoudige Ruby-implementatie van de RFC 7519 OAuth JSON Web Token (JWT) -standaard. Als een hulpmiddel om de authenticatie van gebruikers te controleren, wordt het beschouwd als een van de veiligste systemen voor informatieoverdracht tussen twee partijen.

In dit schema is een applicatieserver geconfigureerd om te controleren of een binnenkomende JWT degene is die is gegenereerd met de authenticatieserver.

CanCanCan is een superhandig autorisatiepareltje. Hiermee kunnen gebruikersrollen en -regels in apps worden gemaakt en verwerkt, waardoor een reeks helpers voor weergaven en controllers wordt geboden. Zelfs het mogelijkheid.rb-bestand in de modeldirectory kan een begrijpelijke en leesbare instructie bevatten met een beschrijving van de rechten voor elke gebruikersgroep. Het werkt soepel samen met edelstenen en biedt gebruikers authenticatie.

OmniAuth is een flexibel authenticatiesysteem dat gebruik maakt van Rack-middleware. Het is een bibliotheek waarmee providers kunnen worden gegenereerd voor authenticatie via sociale netwerken zoals Google of Facebook. De bibliotheek bevat al een uitgebreide lijst van gebruiksklare providers.

Bestanden uploaden

Soms moeten we webapplicaties bouwen waarmee gebruikers verschillende soorten bestanden kunnen uploaden, zoals documentatie of afbeeldingen. Om deze functie zo nuttig en gebruiksvriendelijk mogelijk te maken, passen we enkele bibliotheken toe.

Carrierwave is een uitstekende oplossing voor het uploaden en verwerken van bestanden voor Rails, Sinatra en andere Ruby-webframeworks. Met Carrierwave kunt u versies maken, toevoegen, verwijderen en uploaden vanaf een externe locatie. Trouwens, het heeft test- en configuratie-opties. Carrierwave gem werkt met AWS S3, en in dergelijke gevallen past het goed bij Fog gem, dat kan worden geïntegreerd met een grote verscheidenheid aan cloudservers, waaronder Rackspace Servers en Brightbox.

Carrierwave_backgrounder werkt met carrierwave. Hiermee kunt u bewegende beelden verwerken of comprimeren naar de achtergrond. Voor nu biedt het ondersteuning voor Vertraagde taak, Resque, Sidekiq, SuckerPunch, Girl Friday, Qu en Queue Classic.

MiniMagick dient als minivervanging voor RMagick. De edelsteen zorgt ervoor dat Ruby minder geheugen verwerkt. Het maakt alle opdrachtregelopties van ImageMagick beschikbaar.

Zoeken

In sommige projecten is de hoeveelheid informatie te groot. In dit geval kan het vinden van de vereiste gegevens een uitdaging zijn. Om de zoekoptie zo gebruiksvriendelijk mogelijk uit te voeren, maken we gebruik van één hulpprogramma.

Elasticsearch is een populair zoeksysteem dat veel wordt gebruikt in ondernemingen. De edelsteen integreert de Elasticsearch-engine in Rails-toepassingen met zijn volledige set functies, inclusief zoeken in volledige tekst.

Admin panelen

Het bouwen en leveren van een uitgebreide webapplicatie omvat meestal het beheren van een grote hoeveelheid gegevens. De volgende hulpprogramma's helpen ons team bij het implementeren van een uitgebreide databasebeheertool.

Activeadmin is het administratief raamwerk voor Ruby on Rails-applicaties. Met de plug-in kunnen interfaces in de beheerstijl worden gegenereerd. Het scheidt gebruikelijke patronen van bedrijfstoepassingen en vereenvoudigt de implementatie van elegante interfaces voor ontwikkelaars drastisch.

Administreren is een Rails-engine. Het helpt bij het bouwen van een op de gebruiker reagerend beheerdersdashboard. Voorlopig hebben we het nog niet gebruikt, hoewel we de mogelijkheden onderzoeken en uitkijken naar implementatie in onze toekomstige projecten.

Nog meer geweldige edelstenen voor verschillende taken

En als bonus zullen we voor u extra edelstenen markeren die u misschien interessant vindt. We zullen ze opsommen op basis van hun populariteit (een aantal sterren op Github).

Sidekiq is een eenvoudige en efficiënte achtergrondverwerkingstool voor Ruby. Het past threads toe om veel functies in hetzelfde proces tegelijkertijd te beheren. Hoewel Sidekiq geen Rails vereist, zal het nauw worden gecombineerd met Rails om de achtergrondverwerking zoveel mogelijk te vereenvoudigen.

Simple_form is een juweeltje dat een handige DSL toevoegt voor het maken van formulieren op rails. Het is gekoppeld aan een eenvoudige DSL, zonder mening over markup. Simple Form richt zich op flexibiliteit en assistentie bij effectieve onderdelen voor het bouwen van formulieren. Het primaire doel van Simple Form is het handhaven van de basismethode voor het definiëren van de lay-out, waardoor ontwikkelaars het meest visueel aangename codeontwerp kunnen vinden. Het grootste deel van de DSL was afgeleid van Formtastic.

Friendly_Id biedt geweldige hulp bij het werken met permalink-plug-ins voor ActiveRecord. Hiermee kunt u leesbare, goed uitziende URL's maken en mensvriendelijke tekenreeksen beheren alsof het digitale id's voor ActiveRecord-modellen zijn.

Dotenv-rails is een Ruby-edelsteen om omgevingsvariabelen te laden vanuit een dotfile die zich buiten de hoofdmap van het project kan bevinden. Op deze manier kan Dotenv de app-configuratiegegevens veilig opslaan.

Slim is een sjabloontaal die probeert de syntaxis van de essentiële code-elementen te verminderen zonder cryptisch te worden. Het begon als een oefening om te zien hoeveel er uit een standaard HTML-sjabloon kon worden verwijderd (<,>, afsluitende tags, etc.). Hoe meer mensen interesse toonden voor Slim, hoe meer functionaliteit meegroeide met de flexibiliteit van de syntaxis.

Draper voegt een objectgeoriënteerde laag presentatielogica toe aan een Rails-toepassing. Draper helpt bij het omgaan met deze functionaliteit in de stroom van procedurele helpers of het toevoegen van bulks aan modellen. Draper-decorateurs bieden een efficiëntere manier om modellen te verpakken met presentatiegerelateerde logica om deze laag van hun app te organiseren - en te testen.

Redis is een open source bibliotheek met BSD-licentie voor Ruby-clients. Het vertegenwoordigt een in het geheugen opgeslagen datastructuur. De edelsteen wordt gebruikt als database-, cache- en berichtenmakelaar. Redis biedt ondersteuning voor gegevensstructuren zoals strings, hashes, lijsten, sets, gesorteerde sets met bereikquery's, bitmaps, hyperloglogs, geospatiale indexen met radiusquery's en streams. Het juweel omvat ingebouwde replicatie, Lua-scripts, LRU-uitzetting, transacties en verschillende niveaus van persistentie op de schijf. Bovendien staat Redis hoge beschikbaarheid toe via Redis Sentinel en automatische partitionering met Redis Cluster.

Annoteren vereenvoudigt het werken met Rails-modellen. Het voegt een commentaar toe met een samenvatting van het huidige schema aan de bestanden van de modellen. Deze functie maakt het bouwen van code veel eenvoudiger, omdat het niet nodig is om een ​​schemabestand elke keer te controleren.

Pg_search bouwt ActiveRecord-benoemde bereiken bij het toepassen van PostgreSQL full-text zoeken. Het is een behoorlijk fatsoenlijk alternatief voor Elasticsearch bij het gebruik van PostgreSQL. Het hulpprogramma is eenvoudig te configureren. Bovendien maakt het de implementatie van Autocomplete en Search door associaties mogelijk.

Wicked dient voor het bouwen van stapsgewijze pagina's (vormen van objectcreatie, enz.). Wicked versnelt en vereenvoudigt het werken met controllers.

Config biedt de eenvoudigste manier om yaml-instellingen voor meerdere omgevingen te combineren met Rails, Sinatra, Pandrino en anderen van Ruby. Het biedt een aantrekkelijke en eenvoudige oplossing voor eenvoudig beheer van omgevingsspecifieke parameters.

I18n-taken is een juweeltje voor het werken met vertaling in een app. Het kan worden toegepast op elk project dat de Ruby I18n-edelsteen gebruikt die standaard is in Rails. Het biedt een interface voor het werken met landinstellingen, helpt ontbrekende vertalingen te vinden, bestanden te normaliseren met vertalingen en nieuwe vertalingen toe te voegen via Google translate API.

Money_rails is een geweldig juweeltje voor het werken met valuta's. Hiermee kunnen updates in valutakoersen worden geautomatiseerd en prijzen in de vereiste valuta worden omgezet.

Impressionist maakt het mogelijk paginabezoeken te tellen. Daarenboven maakt het het mogelijk paginabezoeken vele malen per aanvraag te loggen en toe te wijzen aan een model. Het doel is om aanpasbare statistieken te geven, waardoor het direct beschikbaar is in de applicatie, in tegenstelling tot Google Analytics en gegevens ophalen met hun API. Bovendien maakt Impressionist het mogelijk om aangepaste berichten toe te wijzen aan paginaweergaven.

Route_translator is een hulpmiddel om de vertalingen van app-routes te beheren. Het heeft een eenvoudig woordenboekformaat. Aanvankelijk was het een vork van de plug-in translate_routes, maar later omgevormd tot een volwaardig vertaalinstrument.

Concluderen

Bij Codica waarderen we Ruby voor al zijn functies, zoals focus, duidelijkheid en uitstekende taalleesbaarheid, die vaak als menselijk wordt beschouwd. Ruby-edelstenen dragen in grote mate bij aan Ruby-voordelen, omdat ze bij elk projecttype een hoge ontwikkelingssnelheid bieden.

De edelstenen die we in dit artikel hebben vermeld, helpen ons geweldige producten te maken voor verschillende gebieden, zoals e-commerce, reizen, financiën, investeringen en andere.

Natuurlijk zijn er duizenden Ruby-edelstenen, en elk van hen heeft grote waarde. Zelfs met vele jaren ervaring in Ruby, ontdekken we steeds meer nuttige Ruby-edelstenen en de mogelijkheden die ze bieden. Er is altijd ruimte voor verbetering.

We hopen dat onze lijst met edelstenen van Ruby on Rails je helpt met je projecten.

Oorspronkelijk gepubliceerd op www.codica.com.

Meer over Ruby on Rails:

Vind je onze inhoud leuk? Vind meer op onze website: