40 bedste rubinperler vi ikke kan leve uden

Oprindeligt blev denne artikel sendt på Codica Blog.

I dag er webudviklere i stand til at få adgang til færdige løsninger i stedet for at skrive funktionerne fra bunden, hvilket naturligvis har stor positiv indflydelse på udviklingshastigheden.

Når vi ser på Ruby fra dette synspunkt, skiller det sig ud på grund af omfattende biblioteker kaldet Ruby perler. De tilbyder særlige funktioner til Ruby-applikationer, du bygger op. Antag, at du vil have en godkendelsesfunktion i dit program - du behøver ikke at skrive en, du kan få den i form af en perle. Og dette er kun et eksempel blandt tusinder af Ruby juveler der er gratis tilgængelige.

I denne artikel skal vi afdække de øverste rubinperler, vi bruger i webudvikling hos Codica, og hvilke specifikke opgaver hver af dem hjælper os med at udføre.

En rubin perle: hvad står der bag?

Hver perle indeholder et bestemt element af funktionalitet inklusive alle filer, der er relateret til denne funktionalitet. Med Ruby perler kan du finde en løsning næsten til enhver opgave, som vil reducere den tid, du har brug for webudvikling markant.

Disse biblioteker har deres egen opbevaring kaldet RubyGems, og en pakkehåndtering - perlebundt. Begge af dem inkluderer værktøjer til let at håndtere installation af perler og en server til deres distribution. Den første version af RubyGems blev udgivet i 2004.

Et robust samfund er et af Ruby-aktiver. De mest proaktive Ruby-entusiaster finder løsninger med en hånd og implementerer dem i kode. Derefter fletter de disse biblioteker ind i open source, og det er her ædelstenes liv begynder.

På det tidspunkt, hvor denne artikel blev oprettet, var antallet af perler over 148.782.

Kilde: Rubygems.org

En sådan mængde af klare løsninger fjerner behovet for at "genopfinde hjulet", hver gang du står overfor en udfordring. Når de har fri adgang, er mange funktioner allerede skrevet, og de dækker alle udviklingsaspekter: fra at sikre kodekvalitet til implementering.

Top Ruby perler, som vi bruger

Uanset om vi bygger en MVP til en opstart eller omstrukturerer en multidomain finansiel analytisk platform, tjener Ruby perler os som en solid baggrund.

Vi har udarbejdet en liste over seje Ruby perler, som kun er en lille del af alle ædelstene, der hjælper os med at opbygge fantastiske produkter.

Kode kvalitet

En af kodens grundlæggende egenskaber er dens kvalitet og enkelhed. Det påvirker direkte en applikations hastighed og ydelse. For at finde og fjerne omfangsrige kodeblokke og for at udføre refactoring korrekt bruger vi to biblioteker.

Rubocop er et værktøj til analyse og formatering af Ruby statisk kode. Ude af boksen vil det håndhæve mange af de retningslinjer, der er beskrevet i community Ruby Style Guide. RuboCop er ekstremt fleksibel, og de fleste aspekter af dens opførsel kan tilpasses via forskellige konfigurationsindstillinger. Bortset fra at rapportere problemer i din kode, kan RuboCop også automatisk løse nogle problemer for dig.

Overcommit er en perle til konfiguration af Git-kroge. Det er fremragende til at holde kodekvaliteten høj. Det giver mulighed for at indstille git-kroge til linters-lancering inden hver engagement.

debugging

Uanset hvor høj kodekvalitet er, er bugs og fejl undertiden uundgåelige. For at afdække og fjerne bugs finder vores team følgende perler ret nyttige.

Better_errors er en perle, der viser fejl. Det viser nyttige oplysninger om en fejl og har en fremragende visuel effekt. Better_errors erstatter standardsiden for Rails-fejl. Det anvendes også uden for Rails i enhver Rack-app som Rack-mellemware.

Byebug er en let at bruge og funktionsrig debugger til Ruby. Denne perle tillader linje-for-linje udførelse af kode, pauser mellem opgaver og udfører kode, ændrer variablerne under farten.

Test

Webudviklingsproces er umulig uden kvalitetskontrol af den oprettede applikation. Her kommer testning, som giver dig mulighed for at vurdere kvaliteten. For at køre og administrere tests glat bruger vores team følgende hjælpeprogrammer.

RSpec foreslår adfærdsdrevet udvikling for Ruby. Perlen giver standarder for Ruby on Rails-apps-test. Det tilbyder mere læsbar DSL sammenlignet med TestUnit standard testbibliotek. Derudover integreres det let med mange andre perler, der letter testprocessen.

Capybara er en acceptstestramme for webapplikationer. Det kører fejlfrit i tandem med RSpec. Perlen er ansvarlig for integrerede test, der imiterer brugernes handlinger i en browser. Det giver mulighed for at beskrive autorisationsscenariet i nogle få linjer (gå på hjemmesiden, indtast et login og adgangskode, klik på knappen Log-in) og foreslår derefter forskellige praktiske metoder til test af fejlfinding.

Capybara Screenshot er en perle til automatisk at gemme skærmbilleder, hvis et Capybara-scenarie nedbrydes. Sammen med Capybara og agurk, RSpec eller Minitest giver perlen mulighed for at se kildekoden og tage et skærmbillede (når relevant) for hver fejl i en testsuite. Det gemmer HTML for den mislykkede side og et skærmbillede (når du bruger capybara-webkit, Selenium eller poltergeist). En sådan mulighed er ganske værdifuld, når du har brug for at finde et problem i manglende runder.

Parallel_tests får test, der er skrevet i TestUnit, RSpec og Cucumber, hurtigere at køre dem parallelt på flere CPU'er. For at fremskynde processen bruger koden alle kerner i systemerne. Den kører testen og bruger yderligere testdatabaser. Perlen understøtter Rails og andre Ruby-rammer.

Factory Bot er et bibliotek til opsætning af Ruby-objekter som testdata. Det har en ligetil definition syntaks. Biblioteket opretholder sådanne multiple build-strategier som gemte forekomster, ikke-gemte forekomster, attributtasker og genstoppede objekter. Det giver også support til adskillige fabrikker for den samme klasse (bruger, admin_user), inklusive fabriksarv.

Chromedriver_helper giver let installation og brug af chromedriver. Derudover fungerer det som Chromium-projektets selen-webdriveradapter. Det installerer en eksekverbar kromedriverhjælper i en perlevej, hvilket gør det muligt for Selenium at påberåbe sig det som webdriver. Når det er nødvendigt, downloader scenariet den relevante binære for en platform og installerer den i ~ / .chromedriver-helper og kører derefter den. Her tillader perlen bestemte projekter endda at vælge, hvilken version af kromskriver, de vil køre.

Shoulda Matchers er en perle, der leverer enkle foringstests til fælles Rails-funktionalitet, der fremskynder skrivning af testene for en typisk kapacitet.

Simplecov er en af ​​de nyttige perler til test. Det viser procentdelen af ​​koden, der er dækket med enhedstest. Perlen opfordrer således udviklere til at skrive 100% -testet kode, hvilket i høj grad bidrager til dens kvalitet.

Database Cleaner giver kodedækning til Ruby 1.9+ med et kraftfuldt konfigurationsbibliotek og automatisk sammenlægning af dækning på tværs af testsuiter. Det anvendes ofte sammen med RSpec og bruges til at rense en testdatabase, når der lanceres tests. Perlen muliggør indstilling af tidspunktet for oprydning af databasen: før testene lanceres, før / efter kørsel af hver test.

RSpec :: Gentag igen er et værktøj, der giver: prøve igen tilfældigt fejlagtigt RSpec-eksempel. Det tilføjer en: prøve igen til lejlighedsvis mislykkede RSpec-mønstre. Hvis en model har indstillingen: prøve igen, forsøger RSpec at prøve eksemplet det bestemte antal gange, indtil mønsteret fungerer.

Faker er et bibliotek til generering af demodata såsom navne, adresser og telefonnumre.

Deployment

Implementering er et vigtigt trin i webudvikling, og der er et bibliotek, der hjælper os med at køre processen uden problemer.

Mina er et hurtigt deployer og serverautomatiseringsværktøj. Sammenlignet med Capistrano, som er et fjernserverautomatiseringsværktøj, fungerer Mina meget hurtigere. Det genererer en hel procedure som et Bash-script og kører det eksternt på serveren. I modsætning til Capistrano, hvor hver kommando køres separat på deres egne SSH-sessioner, opretter Mina en SSH-session pr. Det minimerer SSH-forbindelsens arbejdsbelastning.

Forresten, på Codica har vi bygget vores eget værktøj til Mina, der kaldes mina-multideploy. Det giver mulighed for at distribuere applikationer på flere servere parallelt.

Godkendelse og autorisation

De fleste af webløsningerne kræver et godkendelses- og autorisationssystem. Det være sig et e-handelswebsted eller en udgivelsesplatform, brugernes databeskyttelse rangerer altid først. For at implementere en sikker løsning bruger vi flere perler.

Devise er en fleksibel autentificeringsløsning til Rails baseret på Warden. Enhed hjælper med at opbygge et identifikationssystem på ethvert kompleksitetsniveau - fra godkendelse via e-mail og adgangskode til et henvisningssystem. Kort sagt har det 10 moduler, herunder:

  • Bekræftelig: sender e-mails med bekræftelsesinstruktioner og verificerer, om en konto allerede er bekræftet under login;
  • Gendannes: nulstiller brugeradgangskoden og sender nulstillingsinstruktioner;
  • Husk: administrerer togen generation og clearing for at huske brugeren fra en gemt cookie;
  • Sporbar: spor tilmeldingskonto, tidsstempler og IP-adresse.

Ruby-JWT perle er en enkel Ruby-implementering af RFC 7519 OAuth JSON Web Token (JWT) -standarden. Som et værktøj til at kontrollere brugernes autentificering betragtes det som et af de sikreste informationsoverførselssystemer mellem to parter.

I dette skema er en applikationsserver konfigureret til at kontrollere, om en indgående JWT er den, der genereres med godkendelsesserveren.

CanCanCan er en super-praktisk autorisationsperle. Det giver mulighed for at oprette og håndtere brugernes roller og regler i apps, hvilket giver et sæt hjælpere til visninger og controllere. Selv filen File.bb i modelmappen kan indeholde en forståelig og læselig instruktion med en beskrivelse af rettigheder for hver brugergruppe. Det interagerer glat med ædelstene, der giver brugerne godkendelse.

OmniAuth er et fleksibelt godkendelsessystem, der bruger Rack-mellemware. Det er et bibliotek, der giver mulighed for at generere udbydere til godkendelse via konti på sociale netværk som Google eller Facebook. Biblioteket indeholder allerede en omfattende liste over brugere, der er klar til brug.

Upload af filer

Nogle gange er vi nødt til at bygge webapplikationer, der giver brugerne mulighed for at uploade forskellige slags filer, f.eks. Dokumentation eller billeder. For at gøre denne funktion så nyttig og brugervenlig som muligt anvender vi et par biblioteker.

Carrierwave er en fremragende løsning til upload af filer og behandling af Rails, Sinatra og andre Ruby webrammer. Carrierwave giver mulighed for at oprette versioner, tilføje, fjerne og uploade dem fra et fjerntliggende sted. Desuden har det test- og konfigurationsindstillinger. Carrierwave perle fungerer med AWS S3, og i sådanne tilfælde passer den godt med Fog gem, som integreres med en lang række skyservere, herunder Rackspace-servere og Brightbox.

Carrierwave_backgrounder arbejder med carrierwave. Det giver mulighed for at flytte billedbehandling eller komprimere i baggrunden. For øjeblikket giver det støtte til Forsinket job, Resque, Sidekiq, SuckerPunch, Girl Friday, Qu og Queue Classic.

MiniMagick fungerer som en mini-erstatning for RMagick. Perlen gør det muligt at reducere Ruby-processernes hukommelse. Det gør alle kommandolinjemulighederne i ImageMagick tilgængelige.

Søg

I nogle projekter er mængden af ​​information for stor. I dette tilfælde kan det være en udfordring at finde de krævede data. For at udføre søgemuligheden så brugervenligt som muligt drager vi fordel af et værktøj.

Elasticsearch er et populært søgesystem, der i vid udstrækning bruges i virksomheder. Perlen integrerer Elasticsearch-motoren i Rails-applikationer med sit komplette sæt funktioner, inklusive fuldtekstsøgning.

Administratorpaneler

Bygning og levering af en omfattende webapplikation involverer normalt styring af en enorm mængde data. Følgende hjælpeprogrammer hjælper vores team med at implementere et omfattende databaseadministrationsværktøj.

Activeadmin er administrationsrammen for Ruby on Rails-applikationer. Plugin giver mulighed for generering af grænseflader for administrationstil. Det adskiller almindelige forretningsapplikationsmønstre og drastisk forenkler implementeringen af ​​elegante grænseflader for udviklere.

Administrere er en Rails-motor. Det hjælper med at konstruere et brugervenligt admin-dashboard. Foreløbig har vi ikke brugt det endnu, selvom vi undersøger dets muligheder og ser frem til at implementere det i vores fremtidige projekter.

Flere fantastiske perler til forskellige opgaver

Og som en bonus fremhæver vi ekstra perler, som du måske finder interessant. Vi viser dem i henhold til deres popularitet (et antal stjerner på Github).

Sidekiq er et enkelt og effektivt baggrundsbehandlingsværktøj til Ruby. Det anvender tråde til at styre mange funktioner i den samme proces samtidig. Selvom Sidekiq ikke kræver Rails, vil den tæt kombineres med Rails for at forenkle baggrundsbehandlingen så meget som muligt.

Simple_form er en perle, der tilføjer en praktisk DSL til formkonstruktion på Rails. Det er bundet til en simpel DSL uden mening om markering. Simple Form fokuserer på fleksibilitet og hjælp til effektive dele til opbygning af formularer. Simple Forms primære formål er at opretholde den grundlæggende metode til at definere layoutet, så udviklere kan finde det mest visuelt behagelige kodedesign. Det meste af DSL stammede fra Formtastic.

Friendly_Id giver god hjælp, når du arbejder med permalink-plugins til ActiveRecord. Det giver mulighed for at oprette læsbare flotte URL'er og styre menneskevenlige strenge, som om de var digitale id'er til ActiveRecord-modeller.

Dotenv-rails er en Ruby perle til indlæsning af miljøvariabler fra en dotfil, der kan være uden for hovedprojektmappen. På denne måde tillader Dotenv sikkert at lagre appkonfigurationsdataene.

Slim er et skabelonsprog, der forsøger at reducere syntaks til de væsentlige kodeelementer uden at blive kryptisk. Det startede som en øvelse for at se, hvor meget der kunne fjernes fra en standard HTML-skabelon (<,>, lukning af tags osv.). Jo flere mennesker, der viste interesse for Slim, jo ​​mere funktionalitet voksede sammen med syntaksens fleksibilitet.

Draper knytter et objektorienteret lag præsentationslogik til et Rails-program. Draper hjælper med at håndtere denne funktionalitet i strømmen af ​​proceduremæssige hjælpere eller tilføje bulks til modeller. Draperdekoratører giver en mere effektiv måde at indpakke modeller med præsentationsrelateret logik til at organisere - og teste - dette lag af deres app.

Redis er et BSD-licenseret Ruby-client open source-bibliotek. Det repræsenterer en lagerhukommelse i datastrukturen. Perlen bruges som en database, cache og meddelelsesmægler. Redis giver support til datastrukturer såsom strenge, hashes, lister, sæt, sorterede sæt med rækkefølgeforespørgsler, bitmaps, hyperloglogs, geospatiale indekser med radiusforespørgsler og streams. Perlen inkluderer indbygget replikering, Lua-scripting, LRU-udsættelse, transaktioner og adskillige niveauer af on-disk persistens. Derudover giver Redis høj tilgængelighed via Redis Sentinel og automatisk partitionering med Redis Cluster.

Annotat forenkler arbejdet med Rails-modeller. Det tilføjer en kommentar, der opsummerer det aktuelle skema til modellerne. Denne funktion gør kodebyggelse meget lettere, fordi der ikke er behov for at kontrollere en planfil hver gang.

Pg_search bygger ActiveRecord-navngivne scopes, når du anvender PostgreSQL fuldtekstsøgning. Det er et helt anstændigt alternativ til Elasticsearch, når du bruger PostgreSQL. Værktøjet er let at konfigurere. Desuden tillader det implementering af autocomplete og search af foreninger.

Wicked tjener til at oprette trin-for-trin-sider (former for objektskabelse osv.). Wicked accelererer og forenkler arbejdet med controllere.

Config giver den nemmeste måde at kombinere yaml-indstillinger med flere omgivelser med Rails, Sinatra, Pandrino og andre af Ruby. Det tilbyder en attraktiv og nem løsning til enkel styring af miljøspecifikke parametre.

I18n- opgaver er en perle til at arbejde med oversættelse i en app. Det kan anvendes til ethvert projekt, der bruger Ruby I18n-perlen, som er standard i Rails. Det giver en grænseflade til at arbejde med lokaliteter, hjælper med at finde manglende oversættelser, normalisere filer med oversættelser og tilføje nye oversættelser via Google translate API.

Money_rails er en fantastisk perle til at arbejde med valutaer. Det giver mulighed for at automatisere opdateringer i valutakurser og konvertere priser til den krævede valuta.

Impressionist tillader tælling af sidevisninger. Derudover muliggør det at logge sidevisninger mange gange pr. Anmodning og henføre det til en model. Dets formål er at give statistikker, der kan tilpasses, hvilket gør det øjeblikkeligt tilgængeligt i applikationen i modsætning til Google Analytics og trækker data med deres API. Desuden tillader impressionist at tildele tilpassede meddelelser til sidevisninger.

Route_translator er et værktøj til at hjælpe med at administrere oversættelser af appruter. Det har et simpelt ordbogsformat. Oprindeligt var det en gaffel til plug-in translate_routes, men senere omdannet til et fuldt ud oversat instrument.

At afslutte

Hos Codica sætter vi pris på Ruby for alle dens funktioner, såsom fokus, klarhed og fremragende sproglæsbarhed, som ofte betragtes som den menneskelige. Ruby juveler tilføjer Ruby fordele i høj grad, da de bringer høj udviklingshastighed til enhver projekttype.

De perler, vi har anført i denne artikel, hjælper os med at bygge fantastiske produkter til forskellige sfærer, såsom e-handel, rejser, finansiering, investering og andre.

Der er selvfølgelig tusinder af Ruby juveler, og hver af dem har stor værdi. Selv med mange års erfaring med Ruby opdager vi flere og mere nyttige Ruby perler og de muligheder, de giver. Der er altid plads til forbedringer.

Vi håber, at vores Ruby on Rails-juvelerliste hjælper dig med dine projekter.

Oprindeligt offentliggjort på www.codica.com.

Mere om Ruby on Rails:

Kan du lide vores indhold? Find mere på vores hjemmeside: