{"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":"raudteed-ja-muud-transpordivahendid","status":"publish","type":"post","link":"https:\/\/thecodest.co\/et\/blog\/rails-and-other-means-of-transport\/","title":{"rendered":"R\u00f6\u00f6pad ja muud transpordivahendid"},"content":{"rendered":"<h2>Populaarsed Rails ja Rails-tee probleemid<\/h2>\n<h3>Probleemid, mida on mainitud dokumendis: <a href=\"https:\/\/web.archive.org\/web\/20210306055107\/https:\/\/upgrow.shopify.io\/code-smells-in-rails-apps\" rel=\"nofollow\">artikkel Shopify kohta<\/a><\/h3>\n<ul>\n<li>marsruutimine,<\/li>\n<li>before-actions, <\/li>\n<li>suured tegevused kontrollerites, <\/li>\n<li>privaatsed meetodid kontrollerites, <\/li>\n<li>\u00fcks kord kasutatud mixins, <\/li>\n<li>loogika seisukohtades, <\/li>\n<li>ActiveRecordi tagasikutsud, <\/li>\n<li>Assotsiatsioonid, <\/li>\n<li>\"rasvased mudelid\".<\/li>\n<\/ul>\n<h3>T\u00e4iendavad probleemid<\/h3>\n<ul>\n<li>Aktiivse kirje valideerimine, <\/li>\n<li>kaudne \u00fcle selges\u00f5nalise, <\/li>\n<li>DRY kuritarvitamine, <\/li>\n<li>delegatsioonid \u00fchendustele, <\/li>\n<li>teenusekutsed mudelites.<\/li>\n<\/ul>\n<h2>Alternatiivid Rails'ile<\/h2>\n<p>Kui tegemist on <strong><a href=\"https:\/\/thecodest.co\/et\/blog\/ways-to-increase-your-rails-performance\/\">R\u00f6\u00f6pad<\/a><\/strong> aastal <strong><a href=\"https:\/\/thecodest.co\/et\/blog\/hire-ror-developer\/\">Ruby<\/a> <\/strong>maailmas on meil mitu alternatiivi. Teised Rackil p\u00f5hinevad raamistikud on j\u00e4rgmised: - <b>Sinatra<\/b>, - <strong>Roda<\/strong>, -<b> Hanami<\/b>.<\/p>\n<h3>Mis teeb nad ainulaadseks?<\/h3>\n<p>Nii Sinatra kui ka Roda pakuvad <a href=\"https:\/\/thecodest.co\/et\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a> plokkide marsruutimise s\u00fcntaks, kuid marsruutimine Sinatras on nimekiri ja Rodas - puu. M\u00f5lemas raamistikus peame me ise tegelema mudelikihi rakendamisega. Roda puhul on hea m\u00f5te kasutada Sequel gemi. <\/p>\n<p>Roda on inspireeritud Sinatrast. See on iseenesest v\u00e4ga kerge, kuid sellel on palju pluginaid. <\/p>\n<p>Hanami on k\u00f5ige l\u00e4hemal<strong> R\u00f6\u00f6pad<\/strong> kui tegemist on raamistikuga h\u00f5lmatud valdkondadega. K\u00f5ige olulisemad erinevused kasutuse osas on j\u00e4rgmised: <\/p>\n<ul>\n<li>kontrollerid sisse <strong>R\u00f6\u00f6pad<\/strong> vs. tegevused Hanamis,<\/li>\n<li>spetsiaalsed klassid\/objektid, mis tegelevad konkreetse HTTP p\u00e4ringuga, mitte \u00fcks kontroller konkreetse ressursiga (mudeliga) seotud tegevuste jaoks,<\/li>\n<li>mudelikiht, mis p\u00f5hineb repositooriumidel ja entiteetidel, eraldades p\u00fcsivuse \u00fclej\u00e4\u00e4nud rakendusest, mitte aktiivse kirje muster. <\/li>\n<\/ul>\n<p>Hanami versioon 1 piirab tugevalt ROMi kasutamist, millel ta p\u00f5hineb (versioon 3, ja see on juba 5), nii et seal pakutud mudelikihti ei tasu kasutada. Kuna tegemist on aga v\u00e4ga avatud raamistikuga, siis on \u00fcsna lihtne rakendada seal mudelit oma. <\/p>\n<h2>Rails'i lisad<\/h2>\n<p>Tasub kasutada lahendusi, mis ei s\u00f5ltu <strong>R\u00f6\u00f6pad<\/strong> ja on l\u00e4hemal \"puhtale\" <strong>Ruby<\/strong>. Esitluses mainitud vahendid on j\u00e4rgmised: <\/p>\n<ul>\n<li>Sequel (ORM, alternatiiv ActiveRecordile),<\/li>\n<li>ROM (objekti kaardistaja), <\/li>\n<li>dry-rb raamatukogud: dry-validations, dry-system ja dry-monads.<\/li>\n<\/ul>\n<p>Sequel on lihtne panna <a href=\"https:\/\/thecodest.co\/et\/dictionary\/why-do-projects-fail\/\">projekt<\/a>, see p\u00f5hineb pistikprogrammidel ja rakendab ka aktiivse kirje mustrit. Sellel on parem madala taseme p\u00e4ringute tugi kui <strong>R\u00f6\u00f6pad<\/strong>' ActiveRecord. <\/p>\n<p>ROM kasutab Sequel'i, kuid selle kontseptsioon on t\u00f5lkida andmebaasi(de) kirjete ja<strong> Ruby<\/strong> esemed. Selle eesm\u00e4rk on kiirus ja <a href=\"https:\/\/thecodest.co\/et\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">andmed<\/a> \u00fcmberkujundamine. Eraldab selgelt p\u00fcsivuskihi rakenduses. <\/p>\n<p>Dry-rb raamatukogud on v\u00e4ga kasulikud t\u00f6\u00f6riistad: <\/p>\n<ul>\n<li>kuivvalideerimist on v\u00e4ga lihtne kasutada <a href=\"https:\/\/thecodest.co\/et\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> projektidele ja v\u00f5imaldab suurt kontrolli sissetulevate andmete \u00f5igsuse \u00fcle, <\/li>\n<li>dry-system vajab arendajatel veidi pratcice'i ja kannatust, et sellest aru saada, kuid see v\u00f5imaldab v\u00e4ga paindlikult hallata s\u00f5ltuvusi rakenduses ja laadida projekti komponente eraldi; kui me tahame seda raamatukogu kasutada <strong>R\u00f6\u00f6pad<\/strong>, saame kasutada kuiva r\u00f6\u00f6paid, <\/li>\n<li>kuiv-monaadid on teoorias keeruline m\u00f5iste, kuid praktikas on see lihtsamini m\u00f5istetav, tulemuseks monaadid v\u00f5ivad olla suurep\u00e4rane v\u00f5imalus suurendada loetavust <a href=\"https:\/\/thecodest.co\/et\/dictionary\/what-is-code-refactoring\/\">kood<\/a> v\u00f5ttes arvesse konkreetseid juhtumeid, mitte hargnevaid if'e. <\/li>\n<\/ul>\n<h2>J\u00e4reldused<\/h2>\n<p>K\u00f5ige parem on kasutada <strong>R\u00f6\u00f6pad<\/strong> et te ei peaks kasutama<strong> R\u00f6\u00f6pad<\/strong> \u00fchel p\u00e4eval. <\/p>\n<h2>Allikad<\/h2>\n<p><strong>Artiklid<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/web.archive.org\/web\/20210306055107\/https:\/\/upgrow.shopify.io\/code-smells-in-rails-apps\">Kood l\u00f5hnab Railsi rakendustes (Shopify poolt)<\/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\">R\u00f6\u00f6basteed Juhendid<\/a><\/li>\n<\/ul>\n<p><strong>Raamistik<\/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>Kalliskivid<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/jeremyevans\/sequel\">J\u00e4rjekord<\/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 skeemi valideerija (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-rails<\/a><\/li>\n<\/ul>\n<p><strong>Spetsifikatsioonid<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/rack\/rack\/blob\/master\/SPEC.rdoc#label-Rack+applications\">Riiuli<\/a><\/li>\n<li><a href=\"https:\/\/json-schema.org\/specification.html\">JSON skeem<\/a><\/li>\n<\/ul>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><strong>Loe edasi:<\/strong><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/ruby-on-jets-ruby-aws-lambda\/\">Mis on Ruby on Jets ja kuidas seda kasutades rakendust luua?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/vuelendar-a-new-codests-project-based-on-vue-js\/\">Vuelendar. Uus Codesti projekt, mis p\u00f5hineb Vue.js-l.<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/codests-weekly-report-of-best-tech-articles-building-software-for-50m-concurrent-sockets-10\/\">Codesti igan\u00e4dalane aruanne parimatest tehnikaartiklitest. Tarkvara ehitamine 50 miljoni samaaegse pistikupesa jaoks (10)<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Rails on Rackiga \u00fchilduv raamistik, mis on keskendunud kiirele rakenduste arendamisele. Kahjuks p\u00f5hjustavad \"k\u00f5ik karbist v\u00e4lja\" l\u00e4henemine ja pime Rails-k\u00e4itumine sageli rakenduskoodi kvaliteedi langust nii vastuv\u00f5tu (loetavuse) kui ka toimimise osas.<\/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\/et\/blogi\/raudteed-ja-muud-transpordivahendid\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/blogi\/raudteed-ja-muud-transpordivahendid\/\" \/>\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 minutit\" \/>\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\":\"et\",\"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\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@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\":\"et\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@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\":\"et\",\"@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\\\/et\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"R\u00f6\u00f6pad ja muud transpordivahendid - 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\/et\/blogi\/raudteed-ja-muud-transpordivahendid\/","og_locale":"et_EE","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\/et\/blogi\/raudteed-ja-muud-transpordivahendid\/","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 minutit"},"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":"et","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\u00f6\u00f6pad ja muud transpordivahendid - 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":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/"]}]},{"@type":"ImageObject","inLanguage":"et","@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":"et"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"et","@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":"et","@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\/et\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/comments?post=3530"}],"version-history":[{"count":3,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3530\/revisions"}],"predecessor-version":[{"id":7965,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3530\/revisions\/7965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media\/3531"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media?parent=3530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/categories?post=3530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/tags?post=3530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}