window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster już istnieje') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Szyny i inne środki transportu - The Codest
The Codest
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Branże
    • Fintech i bankowość
    • E-commerce
    • Adtech
    • Healthtech
    • Produkcja
    • Logistyka
    • Motoryzacja
    • IOT
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
Strzałka w tył WSTECZ
2021-06-30
Software Development

Szyny i inne środki transportu

The Codest

Krzysztof Buszewicz

Senior Software Engineer

Rails jest frameworkiem kompatybilnym z Rack, nastawionym na szybkie tworzenie aplikacji. Niestety, podejście "wszystko po wyjęciu z pudełka" i ślepe zachowanie Rails-way często powodują, że kod aplikacji traci na jakości, zarówno pod względem odbioru (czytelności), jak i działania.

Popularne problemy związane z Railsami i Rails-way

Problemy wspomniane w: artykuł na temat Shopify

  • routing,
  • before-actions,
  • duże akcje w kontrolerach,
  • prywatnych metod w kontrolerach,
  • mixiny użyte raz,
  • logika w widokach,
  • Wywołania zwrotne ActiveRecord,
  • Stowarzyszenia,
  • "grube modelki".

Dodatkowe problemy

  • Aktywne walidacje rekordów,
  • implicite nad explicit,
  • nadużywanie DRY,
  • delegacje do stowarzyszeń,
  • wywołań serwisowych w modelach.

Alternatywy dla Rails

Jeśli chodzi o Szyny w Ruby mamy kilka alternatyw. Inne frameworki oparte na Rack obejmują: - Sinatra, – Roda, – Hanami.

Co czyni je wyjątkowymi?

Zarówno Sinatra, jak i Roda oferują nam składnię routingu blokowego, ale routing w Sinatrze jest listą, a w Rodzie - drzewem. W obu frameworkach musimy sami zająć się implementacją warstwy modelu. W przypadku Rody dobrym pomysłem jest skorzystanie z gema Sequel.

Roda jest inspirowana Sinatrą. Sama w sobie jest bardzo lekka, ale ma wiele wtyczek.

Hanami jest najbliżej Szyny jeśli chodzi o obszary objęte ramami. Najważniejsze różnice w zakresie użytkowania są następujące:

  • kontrolery w Szyny vs. działania w Hanami,
  • dedykowane klasy / obiekty obsługujące konkretne żądanie HTTP, a nie jeden kontroler do działań związanych z konkretnym zasobem (modelem),
  • warstwa modelu oparta na repozytoriach i encjach, oddzielająca trwałość od reszty aplikacji, a nie wzorzec aktywnego rekordu.

Hanami w wersji 1 mocno ogranicza użycie ROMu, na którym bazuje (wersja 3, a jest już 5), więc nie warto korzystać z proponowanej tam warstwy modelu. Ponieważ jednak jest to bardzo otwarty framework, dość łatwo zaimplementować tam własny model.

Dodatki dla Rails

Warto korzystać z rozwiązań, które nie są zależne od Szyny i są bliższe "czystym" Ruby. Narzędzia wymienione w prezentacji to:

  • Sequel (ORM, alternatywa dla ActiveRecord),
  • ROM (mapowanie obiektów),
  • biblioteki dry-rb: dry-validations, dry-system i dry-monads.

Sequel jest łatwy do umieszczenia w projektopiera się na wtyczkach, a także implementuje wzorzec aktywnego rekordu. Ma lepszą niskopoziomową obsługę zapytań niż Szyny' ActiveRecord.

ROM używa Sequel, ale jego koncepcja polega na tłumaczeniu między rekordami w bazie danych a rekordami w bazie danych. Ruby obiektów. Ma na celu szybkość i transformację danych. Wyraźnie oddziela warstwę trwałości w aplikacji.

Biblioteki dry-rb są bardzo przydatnymi narzędziami:

  • Walidacja sucha jest bardzo łatwa w użyciu w projektach API i pozwala na dużą kontrolę nad poprawnością przychodzących danych,
  • dry-system wymaga nieco praktyki i cierpliwości, aby programiści ją zrozumieli, ale pozwala na bardzo elastyczne zarządzanie zależnościami w aplikacji i ładowanie komponentów projektu w izolacji; jeśli chcemy użyć tej biblioteki w Szynymożemy użyć suchych szyn,
  • suche-monady to trudna koncepcja w teorii, ale w praktyce jest łatwiejsza do zrozumienia, monady wynikowe mogą być świetnym sposobem na zwiększenie czytelności kod rozważając konkretne przypadki zamiast rozgałęzień if.

Wnioski

Najlepiej używać Szyny aby nie trzeba było używać Szyny jednego dnia.

Źródła

Artykuły

  • Zapachy kodu w aplikacjach Rails (wg Shopify)
  • Hanami: repozytorium
  • Przewodniki po szynach

Ramy

  • Sinatra
  • Roda
  • Hanami

Klejnoty

  • Sequel
  • ROM
  • Biblioteki dry-rb
  • Ruby JSON Schema Validator (json-schema)
  • Pagy
  • Rodauth
  • rodauth-rails

Specyfikacje

  • Stelaż
  • Schemat JSON

Czytaj więcej:

Czym jest Ruby on Jets i jak zbudować aplikację przy jego użyciu?

Vuelendar. Nowy projekt Codest oparty na Vue.js

Cotygodniowy raport Codest z najlepszymi artykułami technicznymi. Tworzenie oprogramowania dla 50 milionów współbieżnych gniazd (10)

Powiązane artykuły

Software Development

Tworzenie przyszłościowych aplikacji internetowych: spostrzeżenia zespołu ekspertów The Codest

Odkryj, w jaki sposób The Codest wyróżnia się w tworzeniu skalowalnych, interaktywnych aplikacji internetowych przy użyciu najnowocześniejszych technologii, zapewniając płynne doświadczenia użytkowników na wszystkich platformach. Dowiedz się, w jaki sposób nasza wiedza napędza transformację cyfrową i biznes...

THEECODEST
Software Development

10 najlepszych firm tworzących oprogramowanie na Łotwie

Dowiedz się więcej o najlepszych łotewskich firmach programistycznych i ich innowacyjnych rozwiązaniach w naszym najnowszym artykule. Odkryj, w jaki sposób ci liderzy technologiczni mogą pomóc w rozwoju Twojej firmy.

thecodest
Rozwiązania dla przedsiębiorstw i scaleupów

Podstawy tworzenia oprogramowania Java: Przewodnik po skutecznym outsourcingu

Zapoznaj się z tym niezbędnym przewodnikiem na temat skutecznego tworzenia oprogramowania Java outsourcing, aby zwiększyć wydajność, uzyskać dostęp do wiedzy specjalistycznej i osiągnąć sukces projektu z The Codest.

thecodest
Software Development

Kompletny przewodnik po outsourcingu w Polsce

Wzrost liczby outsourcing w Polsce jest napędzany przez postęp gospodarczy, edukacyjny i technologiczny, sprzyjający rozwojowi IT i przyjazny klimat dla biznesu.

TheCodest
Rozwiązania dla przedsiębiorstw i scaleupów

Kompletny przewodnik po narzędziach i technikach audytu IT

Audyty IT zapewniają bezpieczne, wydajne i zgodne z przepisami systemy. Dowiedz się więcej o ich znaczeniu, czytając cały artykuł.

The Codest
Jakub Jakubowicz CTO & Współzałożyciel

Subskrybuj naszą bazę wiedzy i bądź na bieżąco!

    O nas

    The Codest - Międzynarodowa firma programistyczna z centrami technologicznymi w Polsce.

    Wielka Brytania - siedziba główna

    • Office 303B, 182-184 High Street North E6 2JA
      Londyn, Anglia

    Polska - lokalne centra technologiczne

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

      The Codest

    • Strona główna
    • O nas
    • Nasze Usługi
    • Case Studies
    • Nasze Know How
    • Kariera
    • Słownik

      Nasze Usługi

    • Konsultacje IT
    • Software Development
    • Backend Development
    • Frontend Development
    • Zespoły IT
    • Backend Dev
    • Inżynierowie rozwiązań chmurowych
    • Inżynierowie danych
    • Inne
    • Inżynierowie QA

      Raporty

    • Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym
    • Z USA do Europy: Dlaczego amerykańskie startupy decydują się na relokację do Europy?
    • Porównanie centrów rozwoju Tech Offshore: Tech Offshore Europa (Polska), ASEAN (Filipiny), Eurazja (Turcja)
    • Jakie są największe wyzwania CTO i CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Warunki korzystania z witryny

    Copyright © 2025 by The Codest. Wszelkie prawa zastrzeżone.

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