40 beste rubinperler vi ikke kan leve uten

Opprinnelig ble denne artikkelen lagt ut på Codica Blog.

I dag har webutviklere tilgang til ferdige løsninger i stedet for å skrive funksjonene fra bunnen av, noe som selvfølgelig har stor positiv innvirkning på utviklingshastigheten.

Når vi ser på Ruby fra dette synspunktet, skiller det seg ut på grunn av omfattende biblioteker som kalles Ruby edelstener. De tilbyr spesielle funksjoner for Ruby-applikasjoner du bygger opp. Anta at du vil ha en autentiseringsfunksjon i programmet ditt - du trenger ikke å skrive en, du kan få den i form av en perle. Og dette er bare ett eksempel blant tusenvis av rubinperler som er gratis tilgjengelig.

I denne artikkelen skal vi avdekke de beste rubinperlene vi bruker i webutvikling på Codica, og hvilke spesifikke oppgaver hver enkelt av dem hjelper oss å utføre.

En rubin perle: hva ligger bak?

Hver perle inneholder et bestemt element av funksjonalitet, inkludert filer relatert til denne funksjonaliteten. Med Ruby perler kan du finne en løsning nesten for enhver oppgave, noe som vil redusere tiden du trenger for webutvikling betydelig.

Disse bibliotekene har sin egen lagring kalt RubyGems, og en pakkesjef - perlebunter. Begge har verktøy for å enkelt håndtere installasjon av edelstener og en server for distribusjon. Den første versjonen av RubyGems ble utgitt i 2004.

Et robust samfunn er en av Ruby-eiendeler. De mest proaktive Ruby-entusiastene finner løsninger med en hånd og implementerer dem i kode. Så fletter de sammen disse bibliotekene til åpen kildekode, og det er her perlenes liv begynner.

For øyeblikket denne artikkelen ble opprettet, var antallet perler over 148,782.

Kilde: Rubygems.org

En slik mengde ferdige løsninger fjerner behovet for å "gjenoppfinne hjulet" hver gang du står overfor en utfordring. Når de har fri tilgang, er mange funksjoner allerede skrevet, og de dekker alle utviklingsaspekter: fra å sikre kodekvalitet til distribusjon.

Topp Ruby perler som vi bruker

Enten vi bygger en MVP for oppstart eller omstrukturerer en multidomain finansiell analyseplattform, tjener Ruby perler oss som en solid bakgrunn.

Vi har utarbeidet en liste over kule Ruby edelstener, som bare er en liten del av alle edelstener som hjelper oss med å lage gode produkter.

Kodekvalitet

En av de grunnleggende egenskapene til koden er dens kvalitet og enkelhet. Det påvirker direkte hastigheten og ytelsen til et program. For å oppdage og fjerne klumpete kodeblokker og for å utføre refactoring på riktig måte, bruker vi to biblioteker.

Rubocop er et verktøy for å analysere og formatere Ruby statisk kode. Ut av boksen vil det håndheve mange av retningslinjene som er beskrevet i samfunnet Ruby Style Guide. RuboCop er ekstremt fleksibel og de fleste aspekter av oppførselen kan finjusteres via forskjellige konfigurasjonsalternativer. Bortsett fra å rapportere problemer i koden din, kan RuboCop også automatisk løse noen problemer for deg.

Overcommit er en perle for konfigurering av Git-kroker. Det er utmerket for å holde kodekvaliteten høy. Det tillater innstilling av gitkroker for lansering av vinteren før hver forpliktelse.

debugging

Uansett hvor høy kodekvalitet er, er noen ganger feil og feil uunngåelige. For å avdekke og eliminere feil, finner teamet vårt følgende perler ganske nyttige.

Better_errors er en perle for å vise feil. Den viser nyttig informasjon om en feil og har en utmerket visuell innvirkning. Better_errors erstatter standardsiden for Rails. Det brukes også utenfor Rails i hvilken som helst Rack-app som Rack-mellomvare.

Byebug er en enkel å bruke og funksjonsrik debugger for Ruby. Denne perlen tillater linje-for-linje oppfylling av kode, pauser mellom oppgaver og utfører kode, endrer variablene mens du er på farten.

testing

Webutviklingsprosess er umulig uten kvalitetskontroll av den opprettede applikasjonen. Her kommer testing, som lar deg vurdere kvaliteten. For å kjøre og administrere tester jevnt, bruker teamet vårt følgende verktøy.

RSpec foreslår atferdsdrevet utvikling for Ruby. Perlen gir standarder for testing av apper på Ruby on Rails. Det tilbyr mer lesbar DSL, sammenlignet med TestUnit standard testbibliotek. Utover det integreres det enkelt med mange andre perler som letter testprosessen.

Capybara er et akseptabelt testrammeverk for webapplikasjoner. Den kjører feilfritt i tandem med RSpec. Perlen er ansvarlig for integrerte tester som imiterer brukernes handlinger i nettleseren. Det gjør det mulig å beskrive autorisasjonsscenariet i noen få linjer (gå til hjemmesiden, skriv inn pålogging og passord, klikk på påloggingsknappen), og foreslår deretter forskjellige praktiske metoder for test av feilsøking.

Capybara Screenshot er en perle for automatisk lagring av skjermbilder hvis et Capybara-scenario brytes sammen. Sammen med Capybara og Cucumber, RSpec eller Minitest lar perlen vise kildekoden og tar et skjermbilde (når det er relevant) for hver feil i en testsuite. Den lagrer HTML for den mislykkede siden og et skjermbilde (når du bruker capybara-webkit, Selenium eller poltergeist). Et slikt alternativ er ganske verdifullt når du trenger å finne et problem i sviktende runder.

Parallel_tests gjør at tester skrevet i TestUnit, RSpec og Cucumber passerer raskere og kjører dem parallelt på flere CPUer. For å akselerere prosessen bruker koden alle kjerner i systemene. Den kjører testen og bruker flere testdatabaser. Perlen støtter Rails og andre Ruby-rammer.

Factory Bot er et bibliotek for å sette opp Ruby-objekter som testdata. Den har en enkel definisjonssyntaks. Biblioteket opprettholder slike multiple build-strategier som lagrede forekomster, ikke-lagrede forekomster, attributt-hashes og stoppede objekter. Den gir også støtte for en rekke fabrikker for samme klasse (bruker, admin_user), inkludert fabrikkarv.

Chromedriver_helper gir enkel installasjon og bruk av chromedriver. Over det fungerer det som Chromium-prosjektets selen-nettdriveradapter. Den installerer en kjørbar kromedriverhjelper i en perlebane, slik at Selenium kan påkalle den som nettdriveren. Når det er nødvendig, vil scenariet laste ned den aktuelle binæren for en plattform og installere den i ~ / .chromedriver-helper, og deretter utføre den. Her tillater perlen bestemte prosjekter til og med å velge hvilken versjon av kromskriver de vil kjøre.

Shoulda Matchers er en perle som gir enkle rutinger for vanlige Rails-funksjoner som akselererer å skrive testene for en typisk kapasitet.

Simplecov er en av nyttige juveler for testing. Den viser prosentandelen av koden dekket med enhetstester. Dermed oppfordrer perlen utviklere til å skrive 100% -testet kode, noe som i stor grad tilfører kvaliteten.

Database Cleaner gir kodedekning for Ruby 1.9+ med et kraftig konfigurasjonsbibliotek og automatisk sammenslåing av dekning på tvers av testsuiter. Det brukes ofte i takt med RSpec og brukes til å rense en testdatabase når tester startes. Perlen muliggjør innstilling av tidspunktet for databasens opprydding: før testene starter, før / etter å ha kjørt hver test.

RSpec :: Retry er et verktøy som gir: prøve på nytt tilfeldig RSpec-eksempel. Det legger til et alternativ: prøv på nytt for å feile RSpec-mønstre av og til. Hvis en modell har alternativet: prøve på nytt, vil RSpec prøve eksemplet på nytt det bestemte antall ganger til mønsteret fungerer.

Faker er et bibliotek for å generere demodata som navn, adresser og telefonnumre.

Utplassering

Distribusjon er et viktig stadium i nettutvikling, og det er ett bibliotek som hjelper oss å kjøre prosessen jevnt.

Mina er et raskt deployer- og serverautomatiseringsverktøy. Sammenlignet med Capistrano, som er et eksternt serverautomatiseringsverktøy, fungerer Mina mye raskere. Det genererer en hel prosedyre som et Bash-skript og kjører det eksternt på serveren. I motsetning til Capistrano, der hver kommando kjøres separat på sine egne SSH-økter, oppretter Mina én SSH-økt per distribusjon. Det minimerer arbeidsmengden for SSH-tilkoblingen.

Forresten, på Codica har vi bygget vårt eget verktøy for Mina, som kalles mina-multideploy. Det gjør det mulig å distribuere applikasjoner på flere servere parallelt.

Godkjenning og autorisasjon

De fleste av nettløsningene krever et autentiserings- og autorisasjonssystem. Det være seg et netthandelssted eller en publiseringsplattform, brukernes databeskyttelse rangerer alltid først. For å implementere en sikker løsning bruker vi flere perler.

Devise er en fleksibel autentiseringsløsning for Rails basert på Warden. Enhet hjelper deg med å bygge et identifikasjonssystem av alle kompleksitetsnivåer - fra godkjenning via e-post og passord til et henvisingssystem. I et nøtteskall har den 10 moduler, inkludert:

  • Bekreftet: sender e-postmeldinger med bekreftelsesinstruksjoner og verifiserer om en konto allerede er bekreftet under pålogging.
  • Gjenopprettbar: tilbakestiller brukerpassordet og sender tilbakestillingsinstruksjoner;
  • Husk: klarer togen-generering og rydding for å huske brukeren fra en lagret cookie;
  • Sporbar: sporer påloggingskonto, tidsstempler og IP-adresse.

Ruby-JWT perle er en enkel Ruby-implementering av RFC 7519 OAuth JSON Web Token (JWT) -standard. Som et verktøy for å sjekke brukerens autentisering, anses det å være et av de sikreste informasjonsoverføringssystemene mellom to parter.

I dette skjemaet er en applikasjonsserver konfigurert for å sjekke om en innkommende JWT er den som genereres med autentiseringsserveren.

CanCanCan er en super praktisk autorisasjonsperle. Det gjør det mulig å opprette og håndtere brukernes roller og regler i apper, og gir et sett med hjelpere for visninger og kontrollere. Til og med ability.rb-filen i modellkatalogen kan inneholde en forståelig og lesbar instruksjon med en beskrivelse av rettigheter for hver brukergruppe. Det samhandler jevnt med edelstener som gir brukerne autentisering.

OmniAuth er et fleksibelt autentiseringssystem som bruker Rack mellomvare. Det er et bibliotek som lar deg generere leverandører for autentisering via sosiale nettverkskontoer som Google eller Facebook. Biblioteket inneholder allerede en omfattende liste over leverandører som er klare til bruk.

Laster opp filer

Noen ganger må vi bygge webapplikasjoner som lar brukere laste opp forskjellige typer filer, for eksempel dokumentasjon eller bilder. For å gjøre denne funksjonen så nyttig og brukervennlig som mulig bruker vi noen få biblioteker.

Carrierwave er en utmerket løsning for opplasting og behandling av filer for Rails, Sinatra og andre Ruby-nettrammer. Carrierwave lar deg lage versjoner, legge til, fjerne og laste dem opp fra et eksternt sted. Dessuten har den testing og konfigurering av alternativer. Carrierwave perle fungerer med AWS S3, og i slike tilfeller passer den godt med Fog gem, som integreres med et stort utvalg av skyservere, inkludert Rackspace Servers, og Brightbox.

Carrierwave_backgrounder jobber med carrierwave. Det gjør det mulig å flytte bildebehandling eller komprimere i bakgrunnen. Foreløpig gir det støtte for Delayed Job, Resque, Sidekiq, SuckerPunch, Girl Friday, Qu og Queue Classic.

MiniMagick fungerer som en mini-erstatning for RMagick. Perlen gjør det mulig å redusere Ruby-prosessene. Den gjør tilgjengelig alle kommandolinjealternativene til ImageMagick.

Søk

I noen prosjekter er mengden informasjon for stor. I dette tilfellet kan det være en utfordring å finne de nødvendige dataene. For å utføre søkealternativet så brukervennlig som mulig, drar vi nytte av ett verktøy.

Elasticsearch er et populært søkesystem som er mye brukt i bedrifter. Perlen integrerer Elasticsearch-motoren i Rails-applikasjoner med sitt fulle sett med funksjoner, inkludert fulltekstsøk.

Administratorpaneler

Å bygge og levere en omfattende webapplikasjon innebærer vanligvis å håndtere en enorm mengde data. Følgende verktøy hjelper teamet vårt med å implementere et omfattende databaseadministrasjonsverktøy.

Activeadmin er administrasjonsrammen for Ruby on Rails-applikasjoner. Plugin-enheten tillater generering av grensesnitt for administrasjonsstil. Den skiller vanlige forretningsapplikasjonsmønstre, og drastisk forenkler implementeringen av elegante grensesnitt for utviklere.

Administrate er en Rails-motor. Det hjelper til med å konstruere et brukerens responsivt admin-instrumentbord. Foreløpig har vi ikke brukt det ennå, selv om vi undersøker mulighetene og ser frem til å implementere det i våre fremtidige prosjekter.

Flere fantastiske perler for forskjellige oppgaver

Og som en bonus vil vi fremheve ekstra perler som du kan synes er interessante. Vi vil liste dem i henhold til deres popularitet (et antall stjerner på Github).

Sidekiq er et enkelt og effektivt bakgrunnsbehandlingsverktøy for Ruby. Det gjelder tråder for å administrere mange funksjoner i samme prosess samtidig. Selv om Sidekiq ikke krever Rails, vil den tett kombinere med Rails for å forenkle bakgrunnsbehandling så mye som mulig.

Simple_form er en perle som tilfører en praktisk DSL for konstruksjon av former på Rails. Den er knyttet til en enkel DSL, uten mening om markering. Simple Form fokuserer på fleksibilitet og hjelp med effektive deler for skjemaoppbygging. Det enkle formålet med Simple Form er å opprettholde den grunnleggende metoden for å definere oppsettet, slik at utviklere kan finne det mest visuelt behagelige kodedesignet. Det meste av DSL ble avledet fra Formtastic.

Friendly_Id gir god hjelp når du jobber med permalink-plugins for ActiveRecord. Det gjør det mulig å lage lesbare flotte URL-adresser og håndtere menneskevennlige strenger som om de var digitale ID-er for ActiveRecord-modeller.

Dotenv-rails er en Ruby perle for å laste inn miljøvariabler fra en dotfile som kan være utenfor hovedprosjektmappen. På denne måten tillater Dotenv trygt å lagre konfigurasjonsdataene for appen.

Slim er et malspråk som prøver å redusere syntaks til de essensielle kodeelementene uten å bli kryptisk. Det startet som en øvelse for å se hvor mye som kunne fjernes fra en standard HTML-mal (<,>, lukke tags osv.). Jo flere som viste interesse for Slim, desto mer funksjonalitet vokste sammen med syntaksens fleksibilitet.

Draper fester et objektorientert lag med presentasjonslogikk til et Rails-program. Draper hjelper deg med å håndtere denne funksjonaliteten i strømmen av prosedyrehjelpere eller legge til bulker til modeller. Draperdekoratører gir en mer effektiv måte å pakke inn modeller med presentasjonsrelatert logikk for å organisere - og teste - dette laget av appen deres.

Redis er et BSD-lisensiert Ruby-client open source bibliotek. Det representerer et datastrukturlager i minnet. Perlen brukes som database, cache og meldingsmegler. Redis gir støtte for datastrukturer som strenger, hasjer, lister, sett, sorterte sett med rekkevidde-spørsmål, bitmapper, hyperlogger, geospatiale indekser med radius-spørsmål og strømmer. Perlen inkluderer innebygd replikering, Lua-scripting, LRU-utkastelse, transaksjoner og flere nivåer av utholdenhet på disken. Over det tillater Redis høy tilgjengelighet via Redis Sentinel og automatisk partisjonering med Redis Cluster.

Annotat forenkler arbeidet med Rails-modeller. Den legger til en kommentar som oppsummerer gjeldende skjema til modellenes filer. Denne funksjonen gjør kodebygging mye enklere fordi det ikke er behov for å sjekke en skjemafil hver gang.

Pg_search bygger ActiveRecord navngitte scopes når du bruker PostgreSQL fulltekstsøk. Det er et ganske anstendig alternativ til Elasticsearch når du bruker PostgreSQL. Verktøyet er enkelt å konfigurere. Dessuten tillater det å implementere Autocomplete og Search av assosiasjoner.

Wicked tjener til å bygge trinn-for-trinn-sider (former for objektskaping osv.). Wicked akselererer og forenkler arbeidet med kontrollere.

Config gir den enkleste måten å kombinere yaml-innstillinger med flere omgivelser med Rails, Sinatra, Pandrino og andre av Ruby. Det tilbyr en attraktiv og enkel løsning for enkel styring av miljøspesifikke parametere.

I18n- oppgaver er en perle for å jobbe med oversettelse i en app. Det kan brukes på ethvert prosjekt som bruker Ruby I18n-perlen som er standard i Rails. Det gir et grensesnitt for å jobbe med lokaliteter, hjelper deg med å finne manglende oversettelser, normalisere filer med oversettelser og legge til nye oversettelser via Google translate API.

Money_rails er en flott perle for å jobbe med valutaer. Det gjør det mulig å automatisere oppdateringer i valutakurser og konvertere priser til ønsket valuta.

Impresjonist lar telle sidevisninger. Over det gjør det mulig å logge sidevisninger mange ganger per forespørsel og tilskrive den til en modell. Hensikten er å gi tilpassbar statistikk, og gjøre den umiddelbart tilgjengelig i applikasjonen, i motsetning til Google Analytics og trekke data med API-en deres. Dessuten tillater impresjonist å tilordne tilpassede meldinger til sidevisninger.

Route_translator er et verktøy for å administrere oversettelser av appruter. Den har et enkelt ordboksformat. Til å begynne med var det en gaffel til plug-in translate_routes, men senere omgjort til et fullverdig oversettelsesinstrument.

Å konkludere

Hos Codica setter vi pris på Ruby for alle dens funksjoner, som fokus, klarhet og utmerket språklesbarhet, som ofte blir sett på som den menneskelignende. Ruby edelstener gir betydelig fordeler til Ruby, ettersom de gir høy utviklingshastighet til alle prosjekttyper.

Edelstenene vi har listet opp i denne artikkelen hjelper oss med å bygge gode produkter for forskjellige områder, for eksempel e-handel, reiser, finans, investering og andre.

Selvfølgelig er det tusenvis av rubinperler, og hver av dem har stor verdi. Selv med mange års erfaring i Ruby, oppdager vi flere og mer nyttige Ruby-perler og mulighetene de gir. Det er alltid rom for forbedringer.

Vi håper Ruby on Rails-edelstenelisten vil hjelpe deg med prosjektene dine.

Opprinnelig publisert på www.codica.com.

Mer om Ruby on Rails:

Liker innholdet vårt? Finn mer på vår hjemmeside: