{"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":"rals-och-andra-transportmedel","status":"publish","type":"post","link":"https:\/\/thecodest.co\/sv\/blog\/rails-and-other-means-of-transport\/","title":{"rendered":"R\u00e4ls och andra transportmedel"},"content":{"rendered":"<h2>Popul\u00e4ra Rails- och Rails-way-problem<\/h2>\n<h3>Problem som n\u00e4mns i: <a href=\"https:\/\/web.archive.org\/web\/20210306055107\/https:\/\/upgrow.shopify.io\/code-smells-in-rails-apps\" rel=\"nofollow\">artikel om Shopify<\/a><\/h3>\n<ul>\n<li>routing,<\/li>\n<li>f\u00f6re \u00e5tg\u00e4rder, <\/li>\n<li>stora \u00e5tg\u00e4rder i controllers, <\/li>\n<li>privata metoder i styrenheter, <\/li>\n<li>mixins anv\u00e4nds en g\u00e5ng, <\/li>\n<li>logik i vyerna, <\/li>\n<li>ActiveRecord-anrop, <\/li>\n<li>F\u00f6reningar, <\/li>\n<li>\"feta modeller.\"<\/li>\n<\/ul>\n<h3>Ytterligare problem<\/h3>\n<ul>\n<li>Valideringar av aktiva poster, <\/li>\n<li>implicit \u00f6ver explicit, <\/li>\n<li>missbruk av DRY, <\/li>\n<li>Delegationer till f\u00f6reningar, <\/li>\n<li>servicebes\u00f6k i modeller.<\/li>\n<\/ul>\n<h2>Alternativ till Rails<\/h2>\n<p>N\u00e4r det g\u00e4ller <strong><a href=\"https:\/\/thecodest.co\/sv\/blog\/ways-to-increase-your-rails-performance\/\">R\u00e4ls<\/a><\/strong> i <strong><a href=\"https:\/\/thecodest.co\/sv\/blog\/hire-ror-developer\/\">Ruby<\/a> <\/strong>v\u00e4rlden har vi flera alternativ. Andra ramverk baserade p\u00e5 Rack \u00e4r t.ex: - <b>Sinatra<\/b>, - <strong>Roda<\/strong>, -<b> Hanami<\/b>.<\/p>\n<h3>Vad g\u00f6r dem unika?<\/h3>\n<p>B\u00e5de Sinatra och Roda erbjuder <a href=\"https:\/\/thecodest.co\/sv\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a> en blockroutingsyntax, men routing i Sinatra \u00e4r en lista och i Roda - ett tr\u00e4d. I b\u00e5da ramverken m\u00e5ste vi sj\u00e4lva ta itu med implementeringen av modellagret. N\u00e4r det g\u00e4ller Roda \u00e4r det en bra id\u00e9 att anv\u00e4nda Sequel-p\u00e4rlan. <\/p>\n<p>Roda \u00e4r inspirerat av Sinatra. Det \u00e4r mycket l\u00e4tt i sig, men det har en hel del plugins. <\/p>\n<p>Hanami \u00e4r den dag som ligger n\u00e4rmast<strong> R\u00e4ls<\/strong> n\u00e4r det g\u00e4ller omr\u00e5den som omfattas av ramverket. De viktigaste skillnaderna n\u00e4r det g\u00e4ller anv\u00e4ndningen \u00e4r f\u00f6ljande: <\/p>\n<ul>\n<li>styrenheter i <strong>R\u00e4ls<\/strong> vs. handlingar i Hanami,<\/li>\n<li>dedikerade klasser\/objekt som hanterar en specifik HTTP-f\u00f6rfr\u00e5gan, inte en controller f\u00f6r \u00e5tg\u00e4rder relaterade till en specifik resurs (modell),<\/li>\n<li>modellskikt baserat p\u00e5 repositories och entities, som separerar persistens fr\u00e5n resten av applikationen, inte Active Record-m\u00f6nstret. <\/li>\n<\/ul>\n<p>Hanami version 1 begr\u00e4nsar starkt anv\u00e4ndningen av ROM som den \u00e4r baserad p\u00e5 (version 3, och det \u00e4r redan 5), s\u00e5 det \u00e4r inte v\u00e4rt att anv\u00e4nda det modellager som f\u00f6resl\u00e5s d\u00e4r. Men eftersom det \u00e4r ett mycket \u00f6ppet ramverk \u00e4r det ganska enkelt att implementera din egen modell d\u00e4r. <\/p>\n<h2>Kompletteringar f\u00f6r Rails<\/h2>\n<p>Det \u00e4r v\u00e4rt att anv\u00e4nda l\u00f6sningar som inte \u00e4r beroende av <strong>R\u00e4ls<\/strong> och \u00e4r n\u00e4rmare \"rena\" <strong>Ruby<\/strong>. De verktyg som n\u00e4mns i presentationen \u00e4r: <\/p>\n<ul>\n<li>Sequel (ORM, alternativ till ActiveRecord),<\/li>\n<li>ROM (objektmappare), <\/li>\n<li>dry-rb-bibliotek: dry-validations, dry-system och dry-monads.<\/li>\n<\/ul>\n<p>Uppf\u00f6ljaren \u00e4r l\u00e4tt att s\u00e4tta in i en <a href=\"https:\/\/thecodest.co\/sv\/dictionary\/why-do-projects-fail\/\">projekt<\/a>Det \u00e4r baserat p\u00e5 plugins och implementerar \u00e4ven det aktiva registerm\u00f6nstret. Det har b\u00e4ttre st\u00f6d f\u00f6r l\u00e5gniv\u00e5fr\u00e5gor \u00e4n <strong>R\u00e4ls<\/strong>' ActiveRecord. <\/p>\n<p>ROM anv\u00e4nder Sequel, men dess koncept \u00e4r att \u00f6vers\u00e4tta mellan poster i databasen (erna) och<strong> Ruby<\/strong> objekt. Den \u00e4r inriktad p\u00e5 snabbhet och <a href=\"https:\/\/thecodest.co\/sv\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> omvandling. Separerar tydligt persistensskiktet i applikationen. <\/p>\n<p>Dry-rb-bibliotek \u00e4r mycket anv\u00e4ndbara verktyg: <\/p>\n<ul>\n<li>torrvalidering \u00e4r mycket l\u00e4tt att anv\u00e4nda i <a href=\"https:\/\/thecodest.co\/sv\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> projekt och m\u00f6jligg\u00f6r stor kontroll \u00f6ver att inkommande data \u00e4r korrekt, <\/li>\n<li>dry-system kr\u00e4ver lite \u00f6vning och t\u00e5lamod f\u00f6r att utvecklarna ska f\u00f6rst\u00e5 det, men det m\u00f6jligg\u00f6r en mycket flexibel hantering av beroenden i applikationen och laddning av projektkomponenter i isolering; om vi vill anv\u00e4nda detta bibliotek i <strong>R\u00e4ls<\/strong>kan vi anv\u00e4nda torra skenor, <\/li>\n<li>dry-monader \u00e4r ett sv\u00e5rt koncept i teorin, men i praktiken \u00e4r det l\u00e4ttare att f\u00f6rst\u00e5, resultatet monader kan vara ett bra s\u00e4tt att \u00f6ka l\u00e4sbarheten av <a href=\"https:\/\/thecodest.co\/sv\/dictionary\/what-is-code-refactoring\/\">kod<\/a> genom att \u00f6verv\u00e4ga specifika fall ist\u00e4llet f\u00f6r att f\u00f6rgrena om. <\/li>\n<\/ul>\n<h2>Slutsatser<\/h2>\n<p>Det \u00e4r b\u00e4st att anv\u00e4nda <strong>R\u00e4ls<\/strong> s\u00e5 att du inte beh\u00f6ver anv\u00e4nda<strong> R\u00e4ls<\/strong> en dag. <\/p>\n<h2>K\u00e4llor<\/h2>\n<p><strong>Artiklar<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/web.archive.org\/web\/20210306055107\/https:\/\/upgrow.shopify.io\/code-smells-in-rails-apps\">Kodlukt i Rails-appar (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-guider<\/a><\/li>\n<\/ul>\n<p><strong>Ramverk<\/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>\u00c4delstenar<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/jeremyevans\/sequel\">Forts\u00e4ttning<\/a><\/li>\n<li><a href=\"https:\/\/rom-rb.org\">ROM<\/a><\/li>\n<li><a href=\"https:\/\/dry-rb.org\">Biblioteki torr-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-r\u00e4cken<\/a><\/li>\n<\/ul>\n<p><strong>Specifikationer<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/rack\/rack\/blob\/master\/SPEC.rdoc#label-Rack+applications\">Rack<\/a><\/li>\n<li><a href=\"https:\/\/json-schema.org\/specification.html\">JSON Schema<\/a><\/li>\n<\/ul>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><strong>L\u00e4s mer om detta:<\/strong><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/ruby-on-jets-ruby-aws-lambda\/\">Vad \u00e4r Ruby on Jets och hur bygger man en app med hj\u00e4lp av det?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/vuelendar-a-new-codests-project-based-on-vue-js\/\">Vuelkalender. Ett nytt Codest-projekt baserat 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 veckovisa rapport \u00f6ver de b\u00e4sta tekniska artiklarna. Bygga programvara f\u00f6r 50 miljoner samtidiga socklar (10)<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Rails \u00e4r ett Rack-kompatibelt ramverk med fokus p\u00e5 snabb applikationsutveckling. Tyv\u00e4rr leder \"allt ur l\u00e5dan\"-strategin och det blinda Rails-beteendet ofta till att applikationskoden f\u00f6rlorar i kvalitet, b\u00e5de n\u00e4r det g\u00e4ller mottagning (l\u00e4sbarhet) och funktion.<\/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\/sv\/blogg\/rals-och-andra-transportmedel\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/blogg\/rals-och-andra-transportmedel\/\" \/>\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 minuter\" \/>\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\":\"sv-SE\",\"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\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\",\"@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\\\/sv\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"R\u00e4ls och andra transportmedel - 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\/sv\/blogg\/rals-och-andra-transportmedel\/","og_locale":"sv_SE","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\/sv\/blogg\/rals-och-andra-transportmedel\/","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 minuter"},"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":"sv-SE","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":"R\u00e4ls och andra transportmedel - 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":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@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":"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":"sv-SE"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@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":"sv-SE","@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\/sv\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/comments?post=3530"}],"version-history":[{"count":3,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3530\/revisions"}],"predecessor-version":[{"id":7965,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3530\/revisions\/7965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/media\/3531"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/media?parent=3530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/categories?post=3530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/tags?post=3530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}