{"id":3564,"date":"2022-01-05T08:16:52","date_gmt":"2022-01-05T08:16:52","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/"},"modified":"2026-04-28T14:05:35","modified_gmt":"2026-04-28T14:05:35","slug":"modularisering-i-ruby-on-rails-med-packwerk-thattur-i","status":"publish","type":"post","link":"https:\/\/thecodest.co\/is\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/","title":{"rendered":"Ruby on Rails m\u00f3d\u00falun me\u00f0 Packwerk Episode I"},"content":{"rendered":"<h2>Inngangur<\/h2>\n<p>Til a\u00f0 tala um <strong>Pakkaun<\/strong>, vi\u00f0 \u00feurfum fyrst a\u00f0 kynna nokkur hugt\u00f6k.<\/p>\n<ul>\n<li><b>Samheldni<\/b>: v\u00edsar til m\u00e6likvar\u00f0a \u00e1 \u00fev\u00ed hversu miki\u00f0 \u00fe\u00e6ttir \u00ed m\u00f3d\u00fali e\u00f0a bekk tengjast saman.<\/li>\n<li><b>Para\u00f0<\/b>: v\u00edsar til stigs tengsla milli eininga e\u00f0a flokka.<\/li>\n<li><b>M\u00f6rk<\/b>: v\u00edsar til hindrana \u00e1 milli <a href=\"https:\/\/thecodest.co\/is\/dictionary\/what-is-code-refactoring\/\">k\u00f3\u00f0i<\/a>. \u00cd \u00feessu tilfelli v\u00edsar k\u00f3\u00f0am\u00f6rk til mismunandi \u00e1hugasvi\u00f0a innan sama k\u00f3\u00f0agrunns.<\/li>\n<li><b>Mod\u00falun<\/b>ferli\u00f0 vi\u00f0 a\u00f0 skipta hugb\u00fana\u00f0arkerfi \u00ed marga a\u00f0skilda eininga \u00fear sem hver eining starfar sj\u00e1lfst\u00e6tt.<\/li>\n<\/ul>\n<h2>Vandam\u00e1l<\/h2>\n<p>Eins og vi\u00f0 vitum, <strong><a href=\"https:\/\/thecodest.co\/is\/blog\/hire-ror-developer\/\">R\u00fab\u00edn<\/a><\/strong> veitir ekki g\u00f3\u00f0a lausn til a\u00f0 tryggja k\u00f3\u00f0am\u00f6rk. Vi\u00f0 getum tilgreint s\u00fdnileika en allar forsendur ver\u00f0a hla\u00f0nar \u00ed al\u00fej\u00f3\u00f0lega nafnar\u00fdmi\u00f0. \u00cd st\u00f3rum e\u00f0a einlita forritum veldur \u00feessu skorti \u00e1 m\u00f6rkum eftirfarandi vandam\u00e1lum.<\/p>\n<ul>\n<li>L\u00e1gt samhengi,<\/li>\n<li>H\u00e1r samtengingarstu\u00f0ull, <\/li>\n<li>Spagett\u00edk\u00f3\u00f0i.<\/li>\n<\/ul>\n<p>\u00cd tilraun til a\u00f0 m\u00f3\u00f0\u00fal\u00edsera mon\u00f3l\u00edtinn hj\u00e1 Shopify og tryggja m\u00f6rk reyndu \u00feeir mismunandi lausnir \u00e1n \u00feess a\u00f0 n\u00e1 \u00feeim ni\u00f0urst\u00f6\u00f0um sem b\u00faist var vi\u00f0:<br \/>\n\u2013 A\u00f0 stilla einkasta\u00f0fastar,<br \/>\n\u2013 A\u00f0 setja m\u00f6rk me\u00f0 gimsteinum,<br \/>\n\u2013 A\u00f0 nota pr\u00f3fanir til a\u00f0 koma \u00ed veg fyrir tengsl milli \u00fe\u00e1tta,<br \/>\n\u2013 Me\u00f0 \u00fev\u00ed a\u00f0 nota Modulation-gemy Ruby,<br \/>\n\u2013 A\u00f0 skapa <a href=\"https:\/\/thecodest.co\/is\/dictionary\/microservices\/\">\u00f6r\u00fej\u00f3nustur<\/a>.<\/p>\n<p>Me\u00f0 allri \u00feekkingu \u00far fyrri tilraunum \u00e1kv\u00e1\u00f0u \u00feeir a\u00f0 b\u00faa til sitt eigi\u00f0 t\u00e6ki: <strong>Pakkaun<\/strong>.<\/p>\n<h2>Pakkaun<\/h2>\n<h3>Hva\u00f0 er Packwerk?<\/h3>\n<p><strong>Pakkaun<\/strong> er verkf\u00e6ri fyrir kyrrst\u00e6\u00f0a greiningu sem nota\u00f0 er til a\u00f0 tryggja m\u00f6rk milli h\u00f3pa af <strong>R\u00fab\u00edn<\/strong> skr\u00e1r sem kallast <strong>pakkar<\/strong>.<\/p>\n<h3>Hva\u00f0 er pakki?<\/h3>\n<p>A <strong>poki<\/strong> er m\u00f6ppu sem inniheldur sj\u00e1lfhla\u00f0inn k\u00f3\u00f0a. Shopify's <a href=\"https:\/\/thecodest.co\/is\/blog\/how-to-hire-the-best-outsourced-development-team-for-a-scaleup\/\">li\u00f0<\/a> Hvetur til a\u00f0 beita bestu h\u00f6nnunarvenjum vi\u00f0 ger\u00f0 umb\u00fa\u00f0a.<br \/>\n\u2013 Vi\u00f0 \u00e6ttum a\u00f0 pakka saman hlutum sem hafa mikla virkni <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cohesion_(computer_science)\" rel=\"nofollow\">samheldni<\/a>,<\/p>\n<ul>\n<li>Pakkar \u00e6ttu a\u00f0 vera tilt\u00f6lulega lauslega tengdir hver vi\u00f0 annan.<\/li>\n<\/ul>\n<h3>Ger\u00f0ir markaathugana<\/h3>\n<p>Vi\u00f0 getum tryggt pers\u00f3nuvernd og takm\u00f6rk \u00e1 h\u00e1\u00f0ni, athuga\u00f0 brot \u00e1 \u00feessum takm\u00f6rkum og hringh\u00e1\u00f0ni.<\/p>\n<h2>Packwerk \u00ed framkv\u00e6md<\/h2>\n<p>\u00dea\u00f0 er engin ein tiltekinn lei\u00f0 til a\u00f0 byggja upp e\u00f0a endurskipuleggja ums\u00f3knina \u00fe\u00edna vi\u00f0 ger\u00f0 pakka. \u00cd \u00feessari grein munum vi\u00f0 fylgja \u00feeirri n\u00e1lgun sem er m\u00e6lt me\u00f0 af<br \/>\nStephan Hagemann \u00ed <em>Stigvaxandi einingager\u00f0 fyrir Ruby on <a href=\"https:\/\/thecodest.co\/is\/blog\/ways-to-increase-your-rails-performance\/\">Relsar<\/a><\/em>.<\/p>\n<h3>Veldu verkefni\u00f0<\/h3>\n<p>\u00de\u00fa getur b\u00fai\u00f0 til n\u00fdtt <a href=\"https:\/\/thecodest.co\/is\/dictionary\/why-do-projects-fail\/\">verkefni<\/a> e\u00f0a veldu eitt af verkefnum \u00fe\u00ednum. \u00c9g \u00e1kva\u00f0 a\u00f0 nota opinn hugb\u00fana\u00f0arverkefni sem kallast  <a href=\"https:\/\/github.com\/codetriage\/codetriage\" rel=\"nofollow\">K\u00f3\u00f0aflokkun<\/a>. \u00dea\u00f0 er mikilv\u00e6gt a\u00f0 nefna a\u00f0 vi\u00f0 \u00feurfum Rails 6-forrit \u00fear sem <strong>Pakkaun<\/strong> notar Zeitwerk.<\/p>\n<h3>Frumstilla Packwerk<\/h3>\n<p>Fyrst \u00feurfum vi\u00f0 a\u00f0 b\u00e6ta gimsteininn vi\u00f0 Gemfile-skr\u00e1na okkar svona: <code>gull 'packwerk'<\/code> og hlaupa s\u00ed\u00f0an <code>pakki<\/code>\u00ed kons\u00f3lanum. \u00de\u00e1 erum vi\u00f0 tilb\u00fain a\u00f0 frumstilla gem-i\u00f0 sem keyrir. <code>packwerk upphaf<\/code>.<\/p>\n<p>Eftir \u00fea\u00f0 t\u00f6kum vi\u00f0 eftir a\u00f0 <strong>Pakkaun<\/strong> bj\u00f3 til \u00ferj\u00e1r skr\u00e1r fyrir <a href=\"https:\/\/thecodest.co\/is\/blog\/why-us-companies-are-opting-for-polish-developers\/\">okkur<\/a>:<\/p>\n<ul>\n<li>\n<p><em>pakkverk.yml<\/em><\/p>\n<\/li>\n<li>\n<p><em>pakki.yml<\/em><\/p>\n<\/li>\n<li>\n<p><em>beygingar.yml<\/em><\/p>\n<\/li>\n<\/ul>\n<p><em>pakkverk.yml<\/em> er stillingarskr\u00e1 af <strong>Pakkaun<\/strong> \u00fear sem vi\u00f0 munum skilgreina innifalin og \u00fatiloku\u00f0 skr\u00e1, skr\u00e1 hle\u00f0slust\u00edgana, skilgreina inflections-skr\u00e1na, me\u00f0al annars;<\/p>\n<p><em>pakki.yml<\/em> er stillingarskr\u00e1 pakkans. \u00cd \u00feessari skr\u00e1 munum vi\u00f0 b\u00e6ta vi\u00f0 stillingum fyrir m\u00f6rk pakkans. \u00d6ll m\u00f6ppu sem inniheldur package.yml ver\u00f0ur vi\u00f0urkennd sem pakki af <strong>Pakkaun<\/strong>. \u00dea\u00f0 er allt, <strong>Pakkaun<\/strong> bj\u00f3 til okkar fyrsta<br \/>\npakki og vi\u00f0 k\u00f6llum \u00fea\u00f0 <em>r\u00f3t<\/em> pakki.<\/p>\n<p><em>beygingar.yml<\/em> er \u00fear sem vi\u00f0 munum setja s\u00e9rsni\u00f0nar beygingar og skammstafanir ef vi\u00f0 notum \u00fe\u00e6r.<\/p>\n<p>\u00de\u00fa getur fundi\u00f0 n\u00e1nari uppl\u00fdsingar um skr\u00e1rnar og stillingar \u00feeirra \u00ed<br \/>\n<a href=\"https:\/\/github.com\/Shopify\/packwerk\" rel=\"nofollow\">Pakkaun<\/a>.<\/p>\n<h3>Eiginleikar verkf\u00e6ris<\/h3>\n<p>Til \u00feess a\u00f0 m\u00f3d\u00falun virki \u00feurfum vi\u00f0 \u00ferj\u00e1 grunn eiginleika: <em>nefndur \u00edl\u00e1tur<\/em>, \u00feess <em>efni<\/em>, og sk\u00fdr <em>h\u00e1\u00f0leiki<\/em> \u00e1 \u00f6\u00f0rum <em>\u00edl\u00e1t<\/em>. Svo skulum vi\u00f0 skilgreina \u00feessa eiginleika \u00ed <strong>Pakkaun<\/strong>:<\/p>\n<ul>\n<li>\n<p><b>Nafn<\/b>: Nafn pakka er afst\u00e6\u00f0 sl\u00f3\u00f0 hans fr\u00e1 r\u00f3t<br \/>\nums\u00f3kn.<\/p>\n<\/li>\n<li>\n<p><b>Innihald<\/b>\u00deegar vi\u00f0 setjum package.yml \u00ed m\u00f6ppu, ver\u00f0a \u00f6ll skr\u00e1arskrifin \u00ed m\u00f6ppunni n\u00fa innihald pakkans.<\/p>\n<\/li>\n<li>\n<p><b>Forsendur<\/b>Vi\u00f0 getum skilgreint h\u00e1\u00f0ni \u00e1 \u00f6nnur forritapakka me\u00f0 \u00fev\u00ed a\u00f0 b\u00e6ta `dependencies`-lyklinum vi\u00f0 <em>pakki.yml<\/em>.<\/p>\n<\/li>\n<\/ul>\n<p>\u00d6nnur skr\u00e1 sem ekki er innifalin sj\u00e1lfgefi\u00f0 en er m\u00e6lt me\u00f0 er README. Mikilv\u00e6gt er a\u00f0 veita uppl\u00fdsingar um notkun pakkans.<\/p>\n<p>Endir \u00fe\u00e1ttar I <\/p>\n<p><a href=\"https:\/\/thecodest.co\/contact\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/cta_2.jpeg\" alt=\"R\u00e1\u00f0gj\u00f6f um \u00fer\u00f3un stafr\u00e6nna vara\" \/><\/a><\/p>\n<p><strong>Lesa meira<\/strong><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/graphql-ruby-what-about-performance\">GraphQL Ruby. Hvernig er frammista\u00f0an?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">Lestar og \u00f6nnur samg\u00f6ngut\u00e6ki<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Rails-\u00fer\u00f3un me\u00f0 tmux, vim, fzf og ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>M\u00f6nnum finnst erfitt a\u00f0 sj\u00e1 heildarmynd vandam\u00e1lsins \u00e1n \u00feess a\u00f0 verja miklum t\u00edma og fyrirh\u00f6fn. \u00deetta gerist s\u00e9rstaklega \u00feegar unni\u00f0 er me\u00f0 st\u00f3r og fl\u00f3kin forrit. Hverjar eru aukaverkanir breytinga minna? Hvers vegna hefur \u00feessi l\u00edna h\u00e9r \u00e1hrif \u00e1 pr\u00f3fin \u00ed fjarl\u00e6gu hluta k\u00f3\u00f0agrunnsins? Engin fullkomin e\u00f0a fullger\u00f0 lausn er til, en Shopify hefur \u00fer\u00f3a\u00f0 t\u00f3l sem mun l\u00edklega hj\u00e1lpa \u00fe\u00e9r og team \u00fe\u00ednum.<\/p>","protected":false},"author":2,"featured_media":3565,"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-3564","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>Ruby on Rails modularization with Packwerk Episode I - 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\/is\/blogg\/modularisering-i-ruby-on-rails-med-packwerk-thattur-i\/\" \/>\n<meta property=\"og:locale\" content=\"is_IS\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ruby on Rails modularization with Packwerk Episode I\" \/>\n<meta property=\"og:description\" content=\"Humans find it difficult to see the big picture of a problem without devoting a lot of time and effort. This happens especially while working with large and complex applications. What are the side effects of my changes? Why is this line here affecting the tests of a remote part of the codebase? A perfect or complete solution does not exist, but Shopify came out with a tool that will probably help you and your team.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/is\/blogg\/modularisering-i-ruby-on-rails-med-packwerk-thattur-i\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-05T08:16:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-28T14:05:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png\" \/>\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\/png\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Ruby on Rails modularization with Packwerk Episode I\",\"datePublished\":\"2022-01-05T08:16:52+00:00\",\"dateModified\":\"2026-04-28T14:05:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/\"},\"wordCount\":650,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"is\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/\",\"name\":\"Ruby on Rails modularization with Packwerk Episode I - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png\",\"datePublished\":\"2022-01-05T08:16:52+00:00\",\"dateModified\":\"2026-04-28T14:05:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#breadcrumb\"},\"inLanguage\":\"is\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"is\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ruby on Rails modularization with Packwerk Episode I\"}]},{\"@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\":\"is\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"is\",\"@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\":\"is\",\"@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\\\/is\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ruby on Rails einingager\u00f0 me\u00f0 Packwerk Episode I - 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\/is\/blogg\/modularisering-i-ruby-on-rails-med-packwerk-thattur-i\/","og_locale":"is_IS","og_type":"article","og_title":"Ruby on Rails modularization with Packwerk Episode I","og_description":"Humans find it difficult to see the big picture of a problem without devoting a lot of time and effort. This happens especially while working with large and complex applications. What are the side effects of my changes? Why is this line here affecting the tests of a remote part of the codebase? A perfect or complete solution does not exist, but Shopify came out with a tool that will probably help you and your team.","og_url":"https:\/\/thecodest.co\/is\/blogg\/modularisering-i-ruby-on-rails-med-packwerk-thattur-i\/","og_site_name":"The Codest","article_published_time":"2022-01-05T08:16:52+00:00","article_modified_time":"2026-04-28T14:05:35+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Ruby on Rails modularization with Packwerk Episode I","datePublished":"2022-01-05T08:16:52+00:00","dateModified":"2026-04-28T14:05:35+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/"},"wordCount":650,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png","articleSection":["Software Development"],"inLanguage":"is","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/","url":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/","name":"Ruby on Rails einingager\u00f0 me\u00f0 Packwerk Episode I - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png","datePublished":"2022-01-05T08:16:52+00:00","dateModified":"2026-04-28T14:05:35+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#breadcrumb"},"inLanguage":"is","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/"]}]},{"@type":"ImageObject","inLanguage":"is","@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_on_rails_modularization_with_packwerk_-_episode_1.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Ruby on Rails modularization with Packwerk Episode I"}]},{"@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":"is"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"is","@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":"is","@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\/is\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/posts\/3564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/comments?post=3564"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/posts\/3564\/revisions"}],"predecessor-version":[{"id":7982,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/posts\/3564\/revisions\/7982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/media\/3565"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/media?parent=3564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/categories?post=3564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/tags?post=3564"}],"curies":[{"name":"vp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}