{"id":3530,"date":"2020-04-24T08:53:31","date_gmt":"2020-04-24T08:53:31","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/rails-and-other-means-of-transport\/"},"modified":"2026-04-24T11:27:38","modified_gmt":"2026-04-24T11:27:38","slug":"jernbane-og-andre-transportmidler","status":"publish","type":"post","link":"https:\/\/thecodest.co\/nb\/blog\/rails-and-other-means-of-transport\/","title":{"rendered":"Skinner og andre transportmidler"},"content":{"rendered":"<h2>Popul\u00e6re Rails- og Rails-way-problemer<\/h2>\n<h3>Problemer nevnt i: <a href=\"https:\/\/web.archive.org\/web\/20210306055107\/https:\/\/upgrow.shopify.io\/code-smells-in-rails-apps\" rel=\"nofollow\">artikkel p\u00e5 Shopify<\/a><\/h3>\n<ul>\n<li>ruting,<\/li>\n<li>f\u00f8r-handlinger, <\/li>\n<li>store handlinger i controllere, <\/li>\n<li>private metoder i kontrollere, <\/li>\n<li>mixins brukt \u00e9n gang, <\/li>\n<li>logikk i visninger, <\/li>\n<li>ActiveRecord-tilbakekall, <\/li>\n<li>Foreninger, <\/li>\n<li>\"feite modeller.\"<\/li>\n<\/ul>\n<h3>Ytterligere problemer<\/h3>\n<ul>\n<li>Validering av aktive poster, <\/li>\n<li>implisitt over eksplisitt, <\/li>\n<li>misbruk av DRY, <\/li>\n<li>delegasjoner til foreninger, <\/li>\n<li>serviceanrop i modeller.<\/li>\n<\/ul>\n<h2>Alternativer til Rails<\/h2>\n<p>N\u00e5r det gjelder <strong><a href=\"https:\/\/thecodest.co\/nb\/blog\/ways-to-increase-your-rails-performance\/\">Rails<\/a><\/strong> i <strong><a href=\"https:\/\/thecodest.co\/nb\/blog\/hire-ror-developer\/\">Ruby<\/a> <\/strong>verden, har vi flere alternativer. Andre rammeverk basert p\u00e5 Rack er blant annet - <b>Sinatra<\/b>, - <strong>Roda<\/strong>, -<b> Hanami<\/b>.<\/p>\n<h3>Hva gj\u00f8r dem unike?<\/h3>\n<p>B\u00e5de Sinatra og Roda tilbyr <a href=\"https:\/\/thecodest.co\/nb\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a> en blokkrutingssyntaks, men ruting i Sinatra er en liste og i Roda - et tre. I begge rammeverkene m\u00e5 vi h\u00e5ndtere implementeringen av modellaget selv. N\u00e5r det gjelder Roda, er det en god id\u00e9 \u00e5 bruke Sequel-perlen. <\/p>\n<p>Roda er inspirert av Sinatra. Det er veldig lett i seg selv, men det har mange plugins. <\/p>\n<p>Hanami er det n\u00e6rmeste man kommer<strong> Rails<\/strong> n\u00e5r det gjelder omr\u00e5der som dekkes av rammeverket. De viktigste forskjellene n\u00e5r det gjelder bruk er: <\/p>\n<ul>\n<li>kontroll\u00f8rer i <strong>Rails<\/strong> vs. handlinger i Hanami,<\/li>\n<li>dedikerte klasser\/objekter som h\u00e5ndterer en spesifikk HTTP-foresp\u00f8rsel, ikke \u00e9n kontroller for handlinger knyttet til en spesifikk ressurs (modell),<\/li>\n<li>modellaget basert p\u00e5 repositories og entiteter, som skiller persistens fra resten av applikasjonen, ikke det aktive arkivm\u00f8nsteret. <\/li>\n<\/ul>\n<p>Hanami versjon 1 begrenser sterkt bruken av ROM den er basert p\u00e5 (versjon 3, og den er allerede 5), s\u00e5 det er ikke verdt \u00e5 bruke modellaget som er foresl\u00e5tt der. Men siden det er et veldig \u00e5pent rammeverk, er det ganske enkelt \u00e5 implementere modellen din egen. <\/p>\n<h2>Tillegg for Rails<\/h2>\n<p>Det l\u00f8nner seg \u00e5 bruke l\u00f8sninger som ikke er avhengige av <strong>Rails<\/strong> og er n\u00e6rmere \"ren\" <strong>Ruby<\/strong>. Verkt\u00f8yene som nevnes i presentasjonen, er <\/p>\n<ul>\n<li>Sequel (ORM, alternativ til ActiveRecord),<\/li>\n<li>ROM (objektkartlegger), <\/li>\n<li>dry-rb-biblioteker: dry-validations, dry-system og dry-monads.<\/li>\n<\/ul>\n<p>Oppf\u00f8lgeren er lett \u00e5 sette inn i en <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/why-do-projects-fail\/\">prosjekt<\/a>er basert p\u00e5 plugins og implementerer ogs\u00e5 det aktive postm\u00f8nsteret. Den har bedre st\u00f8tte for sp\u00f8rringer p\u00e5 lavt niv\u00e5 enn <strong>Rails<\/strong>' ActiveRecord. <\/p>\n<p>ROM bruker Sequel, men konseptet er \u00e5 oversette mellom poster i databasen(e) og<strong> Ruby<\/strong> objekter. M\u00e5let er hastighet og <a href=\"https:\/\/thecodest.co\/nb\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> transformasjon. Skiller tydelig ut persistenslaget i applikasjonen. <\/p>\n<p>Dry-rb-biblioteker er sv\u00e6rt nyttige verkt\u00f8y: <\/p>\n<ul>\n<li>t\u00f8rrvalidering er veldig enkelt \u00e5 bruke i <a href=\"https:\/\/thecodest.co\/nb\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> prosjekter og gir god kontroll over riktigheten av innkommende data, <\/li>\n<li>dry-system krever litt \u00f8velse og t\u00e5lmodighet for utviklerne for \u00e5 forst\u00e5 det, men det gir mulighet for sv\u00e6rt fleksibel h\u00e5ndtering av avhengigheter i applikasjonen og innlasting av prosjektkomponenter isolert; hvis vi \u00f8nsker \u00e5 bruke dette biblioteket i <strong>Rails<\/strong>kan vi bruke t\u00f8rrskinner, <\/li>\n<li>t\u00f8rr-monader er et vanskelig konsept i teorien, men i praksis er det lettere \u00e5 forst\u00e5, og resultatet monader kan v\u00e6re en fin m\u00e5te \u00e5 \u00f8ke lesbarheten til <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/what-is-code-refactoring\/\">kode<\/a> ved \u00e5 vurdere spesifikke tilfeller i stedet for \u00e5 forgrene ifs. <\/li>\n<\/ul>\n<h2>Konklusjoner<\/h2>\n<p>Det er best \u00e5 bruke <strong>Rails<\/strong> slik at du ikke trenger \u00e5 bruke<strong> Rails<\/strong> en dag. <\/p>\n<h2>Kilder<\/h2>\n<p><strong>Artikler<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/web.archive.org\/web\/20210306055107\/https:\/\/upgrow.shopify.io\/code-smells-in-rails-apps\">Koden lukter i Rails-apper (av Shopify)<\/a><\/li>\n<li><a href=\"https:\/\/guides.hanamirb.org\/v1.3\/repositories\/overview\/\">Hanami: repozytoria<\/a><\/li>\n<li><a href=\"https:\/\/guides.rubyonrails.org\">Rails Guides<\/a><\/li>\n<\/ul>\n<p><strong>Rammeverk<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/sinatrarb.com\">Sinatra<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jeremyevans\/roda\">Roda<\/a><\/li>\n<li><a href=\"https:\/\/hanamirb.org\">Hanami<\/a><\/li>\n<\/ul>\n<p><strong>Edelstener<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/jeremyevans\/sequel\">Oppf\u00f8lger<\/a><\/li>\n<li><a href=\"https:\/\/rom-rb.org\">ROM<\/a><\/li>\n<li><a href=\"https:\/\/dry-rb.org\">Biblioteki dry-rb<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/ruby-json-schema\/json-schema\">Ruby JSON Schema Validator (json-schema)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/ddnexus\/pagy\">Pagy<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jeremyevans\/rodauth\">Rodauth<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/janko\/rodauth-rails\">rodauth-skinner<\/a><\/li>\n<\/ul>\n<p><strong>Spesifikasjoner<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/rack\/rack\/blob\/master\/SPEC.rdoc#label-Rack+applications\">Stativ<\/a><\/li>\n<li><a href=\"https:\/\/json-schema.org\/specification.html\">JSON-skjema<\/a><\/li>\n<\/ul>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><strong>Les mer om dette:<\/strong><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/ruby-on-jets-ruby-aws-lambda\/\">Hva er Ruby on Jets, og hvordan bygger man en app ved hjelp av det?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/vuelendar-a-new-codests-project-based-on-vue-js\/\">Vuelkalender. Et nytt Codest-prosjekt basert p\u00e5 Vue.js<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/codests-weekly-report-of-best-tech-articles-building-software-for-50m-concurrent-sockets-10\/\">Codests ukentlige rapport med de beste teknologiartiklene. Bygge programvare for 50 millioner samtidige stikkontakter (10)<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Rails er et Rack-kompatibelt rammeverk med fokus p\u00e5 rask applikasjonsutvikling. Dessverre f\u00f8rer \"alt ut av boksen\"-tiln\u00e6rmingen og den blinde Rails-atferden ofte til at applikasjonskoden mister kvalitet, b\u00e5de n\u00e5r det gjelder mottak (lesbarhet) og drift.<\/p>","protected":false},"author":2,"featured_media":3531,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3530","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Rails and Other Means of Transport - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/nb\/blogg\/jernbane-og-andre-transportmidler\/\" \/>\n<meta property=\"og:locale\" content=\"nb_NO\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rails and Other Means of Transport\" \/>\n<meta property=\"og:description\" content=\"Rails is a Rack-compatible framework focused on quick application development. Unfortunately, the &quot;everything out of the box&quot; approach and blind Rails-way behavior often cause the application code to lose quality, both in terms of its reception (readability) and operation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/nb\/blogg\/jernbane-og-andre-transportmidler\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-24T08:53:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:27:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Rails and Other Means of Transport\",\"datePublished\":\"2020-04-24T08:53:31+00:00\",\"dateModified\":\"2026-04-24T11:27:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\"},\"wordCount\":577,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails.jpg\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\",\"name\":\"Rails and Other Means of Transport - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails.jpg\",\"datePublished\":\"2020-04-24T08:53:31+00:00\",\"dateModified\":\"2026-04-24T11:27:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#breadcrumb\"},\"inLanguage\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails.jpg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails.jpg\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rails and Other Means of Transport\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nb-NO\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/nb\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Skinner og andre transportmidler - The Codest","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/nb\/blogg\/jernbane-og-andre-transportmidler\/","og_locale":"nb_NO","og_type":"article","og_title":"Rails and Other Means of Transport","og_description":"Rails is a Rack-compatible framework focused on quick application development. Unfortunately, the \"everything out of the box\" approach and blind Rails-way behavior often cause the application code to lose quality, both in terms of its reception (readability) and operation.","og_url":"https:\/\/thecodest.co\/nb\/blogg\/jernbane-og-andre-transportmidler\/","og_site_name":"The Codest","article_published_time":"2020-04-24T08:53:31+00:00","article_modified_time":"2026-04-24T11:27:38+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","type":"image\/jpeg"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"3 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Rails and Other Means of Transport","datePublished":"2020-04-24T08:53:31+00:00","dateModified":"2026-04-24T11:27:38+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/"},"wordCount":577,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","articleSection":["Software Development"],"inLanguage":"nb-NO","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/","url":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/","name":"Skinner og andre transportmidler - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","datePublished":"2020-04-24T08:53:31+00:00","dateModified":"2026-04-24T11:27:38+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#breadcrumb"},"inLanguage":"nb-NO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/"]}]},{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Rails and Other Means of Transport"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nb-NO"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/nb\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/comments?post=3530"}],"version-history":[{"count":3,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3530\/revisions"}],"predecessor-version":[{"id":7965,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3530\/revisions\/7965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media\/3531"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media?parent=3530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/categories?post=3530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/tags?post=3530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}