{"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":"ruby-on-rails-modularisierung-mit-packwerk-episode-i","status":"publish","type":"post","link":"https:\/\/thecodest.co\/de\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/","title":{"rendered":"Ruby on Rails Modularisierung mit Packwerk Episode I"},"content":{"rendered":"<h2>Einf\u00fchrung<\/h2>\n<p>Um \u00fcber folgende Themen zu sprechen <strong>Packwerk<\/strong>m\u00fcssen wir zun\u00e4chst ein paar Begriffe einf\u00fchren.<\/p>\n<ul>\n<li><b>Koh\u00e4sion<\/b>: bezieht sich auf das Ma\u00df der Zusammengeh\u00f6rigkeit von Elementen in einem Modul oder einer Klasse.<\/li>\n<li><b>Kupplung<\/b>: bezieht sich auf den Grad der Abh\u00e4ngigkeit zwischen Modulen oder Klassen.<\/li>\n<li><b>Grenzen<\/b>: bezieht sich auf Barrieren zwischen <a href=\"https:\/\/thecodest.co\/de\/dictionary\/what-is-code-refactoring\/\">Code<\/a>. In diesem Fall bezieht sich eine Code-Grenze auf verschiedene Bereiche innerhalb derselben Code-Basis.<\/li>\n<li><b>Modularisierung<\/b>Der Prozess der Aufteilung eines Softwaresystems in mehrere separate Module, wobei jedes Modul unabh\u00e4ngig arbeitet.<\/li>\n<\/ul>\n<h2>Probleme<\/h2>\n<p>Wie wir wissen, <strong><a href=\"https:\/\/thecodest.co\/de\/blog\/hire-ror-developer\/\">Rubinrot<\/a><\/strong> bietet keine gute L\u00f6sung zur Durchsetzung von Codegrenzen. Wir k\u00f6nnen zwar die Sichtbarkeit festlegen, aber alle Abh\u00e4ngigkeiten werden in den globalen Namespace geladen. In gro\u00dfen oder monolithischen Anwendungen f\u00fchrt dieser Mangel an Grenzen zu folgenden Problemen.<\/p>\n<ul>\n<li>Geringer Zusammenhalt,<\/li>\n<li>Hohe Kopplung, <\/li>\n<li>Spaghetti-Code.<\/li>\n<\/ul>\n<p>In dem Versuch, den Shopify-Monolithen zu modularisieren und Grenzen durchzusetzen, wurden verschiedene L\u00f6sungen ausprobiert, ohne die erwarteten Ergebnisse zu erzielen:<br \/>\n- Einstellung privater Konstanten,<br \/>\n- Festlegung von Grenzen durch Edelsteine,<br \/>\n- Verwendung von Tests, um komponenten\u00fcbergreifende Assoziationen zu verhindern,<br \/>\n- Verwendung des Ruby-Modulations-Gems,<br \/>\n- Erstellen <a href=\"https:\/\/thecodest.co\/de\/dictionary\/microservices\/\">Microservices<\/a>.<\/p>\n<p>Mit all dem Wissen aus fr\u00fcheren Versuchen beschlossen sie, ihr eigenes Werkzeug zu entwickeln: <strong>Packwerk<\/strong>.<\/p>\n<h2>Packwerk<\/h2>\n<h3>Was ist Packwerk?<\/h3>\n<p><strong>Packwerk<\/strong> ist ein statisches Analysewerkzeug, das zur Durchsetzung von Grenzen zwischen Gruppen von <strong>Rubinrot<\/strong> Dateien namens <strong>Pakete<\/strong>.<\/p>\n<h3>Was ist ein Paket?<\/h3>\n<p>A <strong>Paket<\/strong> ist ein Ordner, der automatisch geladenen Code enth\u00e4lt. Shopify's <a href=\"https:\/\/thecodest.co\/de\/blog\/how-to-hire-the-best-outsourced-development-team-for-a-scaleup\/\">Team<\/a> ermutigt dazu, bei der Erstellung von Paketen die besten Designpraktiken anzuwenden.<br \/>\n- Wir sollten Dinge zusammenpacken, die eine hohe Funktionalit\u00e4t haben <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cohesion_(computer_science)\" rel=\"nofollow\">Koh\u00e4sion<\/a>,<\/p>\n<ul>\n<li>Die Pakete sollten relativ lose miteinander gekoppelt sein.<\/li>\n<\/ul>\n<h3>Arten von Grenzkontrollen<\/h3>\n<p>Wir k\u00f6nnen Privatsph\u00e4re und Abh\u00e4ngigkeitsgrenzen durchsetzen, Verletzungen der Grenzen und zyklische Abh\u00e4ngigkeiten \u00fcberpr\u00fcfen.<\/p>\n<h2>Packwerk in der Praxis<\/h2>\n<p>Es gibt keine bestimmte Art und Weise, Ihre Anwendung bei der Erstellung von Paketen zu strukturieren oder umzustrukturieren. In diesem Artikel werden wir dem Ansatz folgen, der von<br \/>\nStephan Hagemann in <em>Schrittweise Modularisierung f\u00fcr Ruby on <a href=\"https:\/\/thecodest.co\/de\/blog\/ways-to-increase-your-rails-performance\/\">Schiene<\/a><\/em>.<\/p>\n<h3>W\u00e4hlen Sie das Projekt<\/h3>\n<p>Sie k\u00f6nnen eine neue <a href=\"https:\/\/thecodest.co\/de\/dictionary\/why-do-projects-fail\/\">Projekt<\/a> oder w\u00e4hlen Sie eines Ihrer Projekte. Ich habe mich f\u00fcr ein Open-Source-Projekt namens  <a href=\"https:\/\/github.com\/codetriage\/codetriage\" rel=\"nofollow\">CodeTriage<\/a>. Es ist wichtig zu erw\u00e4hnen, dass wir eine Rails 6 Anwendung ben\u00f6tigen, da <strong>Packwerk<\/strong> verwendet Zeitwerk.<\/p>\n<h3>Packwerk initialisieren<\/h3>\n<p>Zuerst m\u00fcssen wir den Gem in unser Gemfile einf\u00fcgen wie <code>Edelstein 'Packwerk'<\/code> und f\u00fchren Sie dann <code>B\u00fcndel<\/code>in der Konsole. Dann sind wir bereit, den Edelstein zu initialisieren, indem wir <code>packwerk init<\/code>.<\/p>\n<p>Danach stellen wir fest, dass <strong>Packwerk<\/strong> generierte drei Dateien f\u00fcr <a href=\"https:\/\/thecodest.co\/de\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a>:<\/p>\n<ul>\n<li>\n<p><em>packwerk.yml<\/em><\/p>\n<\/li>\n<li>\n<p><em>paket.yml<\/em><\/p>\n<\/li>\n<li>\n<p><em>inflections.yml<\/em><\/p>\n<\/li>\n<\/ul>\n<p><em>packwerk.yml<\/em> ist die Konfigurationsdatei von <strong>Packwerk<\/strong> wo wir u.a. ein- und ausgeschlossene Dateien definieren, die Ladepfade auflisten und die Beugungsdatei definieren;<\/p>\n<p><em>paket.yml<\/em> ist die Konfigurationsdatei eines Pakets. In dieser Datei werden wir die Konfiguration f\u00fcr die Grenzen unseres Pakets hinzuf\u00fcgen. Jeder Ordner mit package.yml wird als Paket erkannt von <strong>Packwerk<\/strong>. Das war's, <strong>Packwerk<\/strong> schuf unser erstes<br \/>\nPaket und wir nennen es das <em>Wurzel<\/em> Paket.<\/p>\n<p><em>inflections.yml<\/em> ist der Ort, an dem wir unsere benutzerdefinierten Beugungen und Akronyme platzieren werden, falls wir sie verwenden.<\/p>\n<p>Weitere Informationen \u00fcber die Dateien und ihre Konfiguration finden Sie unter<br \/>\n<a href=\"https:\/\/github.com\/Shopify\/packwerk\" rel=\"nofollow\">Packwerk<\/a>.<\/p>\n<h3>Packwerk-Eigenschaften<\/h3>\n<p>Damit die Modularisierung funktioniert, ben\u00f6tigen wir drei grundlegende Eigenschaften: <em>einen benannten Container<\/em>, seine <em>Inhalt<\/em>und ausdr\u00fccklich <em>Abh\u00e4ngigkeiten<\/em> auf andere <em>Container<\/em>. Definieren wir also diese Eigenschaften in <strong>Packwerk<\/strong>:<\/p>\n<ul>\n<li>\n<p><b>Name<\/b>: Der Name eines Pakets ist sein relativer Pfad von der Wurzel des<br \/>\nAnwendung.<\/p>\n<\/li>\n<li>\n<p><b>Inhalt<\/b>: Wenn wir eine package.yml in einen Ordner legen, sind alle Dateien in diesem Ordner nun der Inhalt des Pakets.<\/p>\n<\/li>\n<li>\n<p><b>Abh\u00e4ngigkeiten<\/b>: Wir k\u00f6nnen Abh\u00e4ngigkeiten von anderen Paketen definieren, indem wir den Schl\u00fcssel dependencies zum <em>paket.yml<\/em>.<\/p>\n<\/li>\n<\/ul>\n<p>Eine weitere Datei, die standardm\u00e4\u00dfig nicht enthalten ist, aber empfohlen wird, ist README. Sie ist wichtig, um Informationen \u00fcber die Verwendung des Pakets bereitzustellen.<\/p>\n<p>Das Ende von Episode I <\/p>\n<p><a href=\"https:\/\/thecodest.co\/contact\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/cta_2.jpeg\" alt=\"Beratung zur digitalen Produktentwicklung\" \/><\/a><\/p>\n<p><strong>Mehr lesen<\/strong><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/graphql-ruby-what-about-performance\">GraphQL Ruby. Wie sieht es mit der Leistung aus?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">Eisenbahnen und andere Transportmittel<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Rails-Entwicklung mit TMUX, Vim, Fzf + Ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>F\u00fcr Menschen ist es schwierig, das Gesamtbild eines Problems zu erkennen, ohne viel Zeit und M\u00fche zu investieren. Dies gilt vor allem bei der Arbeit mit gro\u00dfen und komplexen Anwendungen. Was sind die Nebeneffekte meiner \u00c4nderungen? Warum wirkt sich diese Zeile hier auf die Tests in einem anderen Teil der Codebasis aus? Eine perfekte oder vollst\u00e4ndige L\u00f6sung gibt es nicht, aber Shopify hat ein Tool entwickelt, das Ihnen und Ihrem Team wahrscheinlich helfen wird.<\/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=\"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 name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/de\/blog\/ruby-on-rails-modularisierung-mit-packwerk-episode-i\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/blog\/ruby-on-rails-modularisierung-mit-packwerk-episode-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\u00a0Minuten\" \/>\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\":\"de\",\"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\",\"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.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@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\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@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\":\"de\",\"@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\\\/de\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ruby on Rails Modularisierung mit Packwerk Episode I - The Codest","description":"F\u00fcr Menschen ist es schwierig, das Gesamtbild eines Problems zu erkennen, ohne viel Zeit und M\u00fche zu investieren. Dies gilt vor allem bei der Arbeit mit gro\u00dfen und komplexen Anwendungen. Was sind die Nebeneffekte meiner \u00c4nderungen? Warum wirkt sich diese Zeile hier auf die Tests in einem anderen Teil der Codebasis aus? Eine perfekte oder vollst\u00e4ndige L\u00f6sung gibt es nicht, aber Shopify hat ein Tool entwickelt, das Ihnen und Ihrem Team wahrscheinlich helfen wird.","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\/de\/blog\/ruby-on-rails-modularisierung-mit-packwerk-episode-i\/","og_locale":"de_DE","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\/de\/blog\/ruby-on-rails-modularisierung-mit-packwerk-episode-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\u00a0Minuten"},"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":"de","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 Modularisierung mit 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","description":"F\u00fcr Menschen ist es schwierig, das Gesamtbild eines Problems zu erkennen, ohne viel Zeit und M\u00fche zu investieren. Dies gilt vor allem bei der Arbeit mit gro\u00dfen und komplexen Anwendungen. Was sind die Nebeneffekte meiner \u00c4nderungen? Warum wirkt sich diese Zeile hier auf die Tests in einem anderen Teil der Codebasis aus? Eine perfekte oder vollst\u00e4ndige L\u00f6sung gibt es nicht, aber Shopify hat ein Tool entwickelt, das Ihnen und Ihrem Team wahrscheinlich helfen wird.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/"]}]},{"@type":"ImageObject","inLanguage":"de","@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":"Der 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":"de"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Der Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"de","@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":"de","@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\/de\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/posts\/3564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/comments?post=3564"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/posts\/3564\/revisions"}],"predecessor-version":[{"id":7982,"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/posts\/3564\/revisions\/7982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/media\/3565"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/media?parent=3564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/categories?post=3564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/de\/wp-json\/wp\/v2\/tags?post=3564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}