window.pipedriveLeadboosterConfig = { bas: 'leadbooster-chat.pipedrive.com', företagId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(funktion () { var w = fönster if (w.LeadBooster) { console.warn('LeadBooster finns redan') } annars { w.LeadBooster = { q: [], on: funktion (n, h) { this.q.push({ t: "o", n: n, h: h }) }, trigger: funktion (n) { this.q.push({ t: 't', n: n }) }, } } })() Räls och andra transportmedel - The Codest
Codest
  • Om oss
  • Tjänster
    • Utveckling av programvara
      • Frontend-utveckling
      • Backend-utveckling
    • Staff Augmentation
      • Frontend-utvecklare
      • Backend-utvecklare
      • Dataingenjörer
      • Ingenjörer inom molntjänster
      • QA-ingenjörer
      • Övriga
    • Det rådgivande
      • Revision och rådgivning
  • Industrier
    • Fintech & bankverksamhet
    • E-commerce
    • Adtech
    • Hälsoteknik
    • Tillverkning
    • Logistik
    • Fordon
    • IOT
  • Värde för
    • VD OCH KONCERNCHEF
    • CTO
    • Leveranschef
  • Vårt team
  • Fallstudier
  • Vet hur
    • Blogg
    • Möten
    • Webbinarier
    • Resurser
Karriär Ta kontakt med oss
  • Om oss
  • Tjänster
    • Utveckling av programvara
      • Frontend-utveckling
      • Backend-utveckling
    • Staff Augmentation
      • Frontend-utvecklare
      • Backend-utvecklare
      • Dataingenjörer
      • Ingenjörer inom molntjänster
      • QA-ingenjörer
      • Övriga
    • Det rådgivande
      • Revision och rådgivning
  • Värde för
    • VD OCH KONCERNCHEF
    • CTO
    • Leveranschef
  • Vårt team
  • Fallstudier
  • Vet hur
    • Blogg
    • Möten
    • Webbinarier
    • Resurser
Karriär Ta kontakt med oss
Pil tillbaka GÅ TILLBAKA
2021-06-30
Utveckling av programvara

Räls och andra transportmedel

Codest

Krzysztof Buszewicz

Senior Software Engineer

Rails är ett Rack-kompatibelt ramverk med fokus på snabb applikationsutveckling. Tyvärr leder "allt ur lådan"-strategin och det blinda Rails-beteendet ofta till att applikationskoden förlorar i kvalitet, både när det gäller mottagning (läsbarhet) och funktion.

Populära Rails- och Rails-way-problem

Problem som nämns i: artikel om Shopify

  • routing,
  • före åtgärder,
  • stora åtgärder i controllers,
  • privata metoder i styrenheter,
  • mixins används en gång,
  • logik i vyerna,
  • ActiveRecord-anrop,
  • Föreningar,
  • "feta modeller."

Ytterligare problem

  • Valideringar av aktiva poster,
  • implicit över explicit,
  • missbruk av DRY,
  • Delegationer till föreningar,
  • servicebesök i modeller.

Alternativ till Rails

När det gäller Räls i Ruby världen har vi flera alternativ. Andra ramverk baserade på Rack är t.ex: - Sinatra, – Roda, – Hanami.

Vad gör dem unika?

Både Sinatra och Roda erbjuder oss en syntax för blockrouting, men routing i Sinatra är en lista och i Roda - ett träd. I båda ramverken måste vi själva ta itu med implementeringen av modellagret. När det gäller Roda är det en bra idé att använda Sequel-pärlan.

Roda är inspirerat av Sinatra. Det är mycket lätt i sig, men det har en hel del plugins.

Hanami är den dag som ligger närmast Räls när det gäller områden som omfattas av ramverket. De viktigaste skillnaderna när det gäller användningen är följande:

  • styrenheter i Räls vs. handlingar i Hanami,
  • dedikerade klasser/objekt som hanterar en specifik HTTP-förfrågan, inte en controller för åtgärder relaterade till en specifik resurs (modell),
  • modellskikt baserat på repositories och entities, som separerar persistens från resten av applikationen, inte Active Record-mönstret.

Hanami version 1 begränsar starkt användningen av ROM som den är baserad på (version 3, och det är redan 5), så det är inte värt att använda det modellager som föreslås där. Men eftersom det är ett mycket öppet ramverk är det ganska enkelt att implementera din egen modell där.

Kompletteringar för Rails

Det är värt att använda lösningar som inte är beroende av Räls och är närmare "rena" Ruby. De verktyg som nämns i presentationen är:

  • Sequel (ORM, alternativ till ActiveRecord),
  • ROM (objektmappare),
  • dry-rb-bibliotek: dry-validations, dry-system och dry-monads.

Uppföljaren är lätt att sätta in i en projektDet är baserat på plugins och implementerar även det aktiva registermönstret. Det har bättre stöd för lågnivåfrågor än Räls' ActiveRecord.

ROM använder Sequel, men dess koncept är att översätta mellan poster i databasen (erna) och Ruby objekt. Det syftar till snabbhet och datatransformation. Separerar tydligt persistensskiktet i applikationen.

Dry-rb-bibliotek är mycket användbara verktyg:

  • dry-validation är mycket enkelt att använda i API-projekt och ger stor kontroll över att inkommande data är korrekt,
  • dry-system kräver lite övning och tålamod för att utvecklarna ska förstå det, men det möjliggör en mycket flexibel hantering av beroenden i applikationen och laddning av projektkomponenter i isolering; om vi vill använda detta bibliotek i Rälskan vi använda torra skenor,
  • dry-monader är ett svårt koncept i teorin, men i praktiken är det lättare att förstå, resultatet monader kan vara ett bra sätt att öka läsbarheten av kod genom att överväga specifika fall istället för att förgrena om.

Slutsatser

Det är bäst att använda Räls så att du inte behöver använda Räls en dag.

Källor

Artiklar

  • Kodlukt i Rails-appar (av Shopify)
  • Hanami: repozytoria
  • Rails-guider

Ramverk

  • Sinatra
  • Roda
  • Hanami

Ädelstenar

  • Fortsättning
  • ROM
  • Biblioteki torr-rb
  • Ruby JSON Schema Validator (json-schema)
  • Pagy
  • Rodauth
  • rodauth-räcken

Specifikationer

  • Rack
  • JSON Schema

Läs mer om detta:

Vad är Ruby on Jets och hur bygger man en app med hjälp av det?

Vuelkalender. Ett nytt Codest-projekt baserat på Vue.js

Codests veckovisa rapport över de bästa tekniska artiklarna. Bygga programvara för 50 miljoner samtidiga socklar (10)

Relaterade artiklar

Utveckling av programvara

Bygg framtidssäkrade webbappar: Insikter från The Codest:s expertteam

Upptäck hur The Codest utmärker sig genom att skapa skalbara, interaktiva webbapplikationer med banbrytande teknik som ger sömlösa användarupplevelser på alla plattformar. Läs om hur vår expertis driver digital omvandling och affärsutveckling...

DEKODEST
Utveckling av programvara

Topp 10 Lettlandsbaserade mjukvaruutvecklingsföretag

Läs mer om Lettlands främsta mjukvaruutvecklingsföretag och deras innovativa lösningar i vår senaste artikel. Upptäck hur dessa teknikledare kan hjälpa till att lyfta ditt företag.

thecodest
Lösningar för företag och uppskalningsföretag

Java Software Development Essentials: En guide till framgångsrik outsourcing

Utforska denna viktiga guide om framgångsrik outsourcing av Java-programvaruutveckling för att förbättra effektiviteten, få tillgång till expertis och driva projektframgång med The Codest.

thecodest
Utveckling av programvara

Den ultimata guiden till outsourcing i Polen

Den kraftiga ökningen av outsourcing i Polen drivs av ekonomiska, utbildningsmässiga och tekniska framsteg, vilket främjar IT-tillväxt och ett företagsvänligt klimat.

TheCodest
Lösningar för företag och uppskalningsföretag

Den kompletta guiden till verktyg och tekniker för IT-revision

IT-revisioner säkerställer säkra, effektiva och kompatibla system. Läs mer om hur viktiga de är genom att läsa hela artikeln.

Codest
Jakub Jakubowicz CTO och medgrundare

Prenumerera på vår kunskapsbas och håll dig uppdaterad om expertisen från IT-sektorn.

    Om oss

    The Codest - Internationellt mjukvaruutvecklingsföretag med teknikhubbar i Polen.

    Förenade kungariket - Huvudkontor

    • Kontor 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokala tekniknav

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      Codest

    • Hem
    • Om oss
    • Tjänster
    • Fallstudier
    • Vet hur
    • Karriär
    • Ordbok

      Tjänster

    • Det rådgivande
    • Utveckling av programvara
    • Backend-utveckling
    • Frontend-utveckling
    • Staff Augmentation
    • Backend-utvecklare
    • Ingenjörer inom molntjänster
    • Dataingenjörer
    • Övriga
    • QA-ingenjörer

      Resurser

    • Fakta och myter om att samarbeta med en extern partner för mjukvaruutveckling
    • Från USA till Europa: Varför väljer amerikanska startup-företag att flytta till Europa?
    • Jämförelse av Tech Offshore Development Hubs: Tech Offshore Europa (Polen), ASEAN (Filippinerna), Eurasien (Turkiet)
    • Vilka är de största utmaningarna för CTO:er och CIO:er?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Användarvillkor för webbplatsen

    Copyright © 2025 av The Codest. Alla rättigheter reserverade.

    sv_SESwedish
    en_USEnglish de_DEGerman da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek sv_SESwedish