{"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-modularizacion-con-packwerk-episodio-i","status":"publish","type":"post","link":"https:\/\/thecodest.co\/es\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/","title":{"rendered":"Ruby on Rails modularizaci\u00f3n con Packwerk Episodio I"},"content":{"rendered":"<h2>Introducci\u00f3n<\/h2>\n<p>Para hablar de <strong>Packwerk<\/strong>En primer lugar, debemos introducir algunos conceptos.<\/p>\n<ul>\n<li><b>Cohesi\u00f3n<\/b>: se refiere a la medida de la pertenencia de los elementos de un m\u00f3dulo o clase.<\/li>\n<li><b>Acoplamiento<\/b>: se refiere al nivel de dependencia entre m\u00f3dulos o clases.<\/li>\n<li><b>L\u00edmites<\/b>: se refiere a las barreras entre <a href=\"https:\/\/thecodest.co\/es\/dictionary\/what-is-code-refactoring\/\">c\u00f3digo<\/a>. En este caso, un l\u00edmite de c\u00f3digo se refiere a diferentes dominios de inter\u00e9s dentro de la misma base de c\u00f3digo.<\/li>\n<li><b>Modularizaci\u00f3n<\/b>: el proceso de dividir un sistema de software en varios m\u00f3dulos separados en los que cada m\u00f3dulo funciona de forma independiente.<\/li>\n<\/ul>\n<h2>Problemas<\/h2>\n<p>Como sabemos, <strong><a href=\"https:\/\/thecodest.co\/es\/blog\/hire-ror-developer\/\">Ruby<\/a><\/strong> no proporciona una buena soluci\u00f3n para hacer cumplir los l\u00edmites del c\u00f3digo. Podemos especificar la visibilidad, pero todas las dependencias se cargar\u00e1n en el espacio de nombres global. En aplicaciones grandes o monolitos, esta falta de l\u00edmites produce los siguientes problemas.<\/p>\n<ul>\n<li>Baja cohesi\u00f3n,<\/li>\n<li>Acoplamiento alto, <\/li>\n<li>C\u00f3digo espagueti.<\/li>\n<\/ul>\n<p>En un intento de modularizar el monolito de Shopify y reforzar los l\u00edmites, probaron diferentes soluciones sin conseguir los resultados esperados:<br \/>\n- Establecer constantes privadas,<br \/>\n- Establecer l\u00edmites mediante gemas,<br \/>\n- Uso de pruebas para evitar asociaciones entre componentes,<br \/>\n- Usando la gema Modulaci\u00f3n de Ruby,<br \/>\n- Crear <a href=\"https:\/\/thecodest.co\/es\/dictionary\/microservices\/\">microservicios<\/a>.<\/p>\n<p>Con todos los conocimientos de intentos anteriores, decidieron crear su propia herramienta: <strong>Packwerk<\/strong>.<\/p>\n<h2>Packwerk<\/h2>\n<h3>\u00bfQu\u00e9 es Packwerk?<\/h3>\n<p><strong>Packwerk<\/strong> es una herramienta de an\u00e1lisis est\u00e1tico utilizada para imponer l\u00edmites entre grupos de <strong>Ruby<\/strong> archivos llamados <strong>paquetes<\/strong>.<\/p>\n<h3>\u00bfQu\u00e9 es un paquete?<\/h3>\n<p>A <strong>paquete<\/strong> es una carpeta que contiene c\u00f3digo autocargado. La carpeta <a href=\"https:\/\/thecodest.co\/es\/blog\/how-to-hire-the-best-outsourced-development-team-for-a-scaleup\/\">equipo<\/a> anima a utilizar las mejores pr\u00e1cticas de dise\u00f1o a la hora de crear paquetes.<br \/>\n- Deber\u00edamos empaquetar juntos cosas que tengan una alta funcionalidad <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cohesion_(computer_science)\" rel=\"nofollow\">cohesi\u00f3n<\/a>,<\/p>\n<ul>\n<li>Los paquetes deben estar relativamente poco acoplados entre s\u00ed.<\/li>\n<\/ul>\n<h3>Tipos de controles fronterizos<\/h3>\n<p>Podemos imponer l\u00edmites de privacidad y dependencia, comprobar las violaciones de los l\u00edmites y las dependencias c\u00edclicas.<\/p>\n<h2>Packwerk en la pr\u00e1ctica<\/h2>\n<p>No existe una \u00fanica forma espec\u00edfica de estructurar o reestructurar tu aplicaci\u00f3n al crear paquetes. En este art\u00edculo, vamos a seguir el enfoque sugerido por<br \/>\nStephan Hagemann en <em>Modularizaci\u00f3n gradual de Ruby on <a href=\"https:\/\/thecodest.co\/es\/blog\/ways-to-increase-your-rails-performance\/\">Rieles<\/a><\/em>.<\/p>\n<h3>Elija el proyecto<\/h3>\n<p>Puede crear un nuevo <a href=\"https:\/\/thecodest.co\/es\/dictionary\/why-do-projects-fail\/\">proyecto<\/a> o elija uno de sus proyectos. Decid\u00ed utilizar un proyecto de c\u00f3digo abierto llamado  <a href=\"https:\/\/github.com\/codetriage\/codetriage\" rel=\"nofollow\">CodeTriage<\/a>. Es importante mencionar que necesitamos una aplicaci\u00f3n Rails 6 ya que <strong>Packwerk<\/strong> utiliza Zeitwerk.<\/p>\n<h3>Inicializar Packwerk<\/h3>\n<p>En primer lugar, tenemos que a\u00f1adir la gema a nuestro Gemfile como <code>gema 'packwerk<\/code> y luego ejecute <code>paquete<\/code>en la consola. Entonces estamos listos para inicializar la gema ejecutando <code>packwerk init<\/code>.<\/p>\n<p>Despu\u00e9s, observamos que <strong>Packwerk<\/strong> gener\u00f3 tres archivos para <a href=\"https:\/\/thecodest.co\/es\/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>paquete.yml<\/em><\/p>\n<\/li>\n<li>\n<p><em>inflexiones.yml<\/em><\/p>\n<\/li>\n<\/ul>\n<p><em>packwerk.yml<\/em> es el archivo de configuraci\u00f3n de <strong>Packwerk<\/strong> donde definiremos los ficheros incluidos y excluidos, listaremos las rutas de carga, definiremos el fichero de inflexiones, entre otras cosas;<\/p>\n<p><em>paquete.yml<\/em> es el archivo de configuraci\u00f3n de un paquete. En este archivo, a\u00f1adiremos la configuraci\u00f3n para los l\u00edmites de nuestro paquete. Cualquier carpeta con package.yml ser\u00e1 reconocida como paquete por <strong>Packwerk<\/strong>. Ya est\u00e1, <strong>Packwerk<\/strong> cre\u00f3 nuestro primer<br \/>\ny lo llamamos <em>ra\u00edz<\/em> paquete.<\/p>\n<p><em>inflexiones.yml<\/em> es donde colocaremos nuestras inflexiones y siglas personalizadas en caso de que las utilicemos.<\/p>\n<p>Encontrar\u00e1 m\u00e1s informaci\u00f3n sobre los ficheros y su configuraci\u00f3n en<br \/>\n<a href=\"https:\/\/github.com\/Shopify\/packwerk\" rel=\"nofollow\">Packwerk<\/a>.<\/p>\n<h3>Propiedades de Packwerk<\/h3>\n<p>Para que la modularizaci\u00f3n funcione necesitamos tres propiedades b\u00e1sicas: <em>un contenedor con nombre<\/em>su <em>contenido<\/em>y expl\u00edcita <em>dependencias<\/em> en otros <em>contenedores<\/em>. As\u00ed que definamos esas propiedades en <strong>Packwerk<\/strong>:<\/p>\n<ul>\n<li>\n<p><b>Nombre<\/b>: El nombre de un paquete es su ruta relativa desde la ra\u00edz del archivo<br \/>\naplicaci\u00f3n.<\/p>\n<\/li>\n<li>\n<p><b>Contenido<\/b>: Cuando colocamos un package.yml en una carpeta, todos los archivos de la carpeta son ahora el contenido del paquete.<\/p>\n<\/li>\n<li>\n<p><b>Dependencias<\/b>: Podemos definir dependencias de otros paquetes a\u00f1adiendo la clave dependencies al campo <em>paquete.yml<\/em>.<\/p>\n<\/li>\n<\/ul>\n<p>Otro archivo que no se incluye por defecto pero que se recomienda es README. Es importante para proporcionar informaci\u00f3n sobre el uso del paquete.<\/p>\n<p>Fin del Episodio I <\/p>\n<p><a href=\"https:\/\/thecodest.co\/contact\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/cta_2.jpeg\" alt=\"Consultor\u00eda de desarrollo de productos digitales\" \/><\/a><\/p>\n<p><strong>Seguir leyendo<\/strong><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/graphql-ruby-what-about-performance\">GraphQL Ruby. \u00bfY el rendimiento?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">Ferrocarriles y otros medios de transporte<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Desarrollo Rails con TMUX, Vim, Fzf + Ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>A los humanos nos resulta dif\u00edcil ver el panorama general de un problema sin dedicarle mucho tiempo y esfuerzo. Esto ocurre especialmente cuando se trabaja con aplicaciones grandes y complejas. \u00bfCu\u00e1les son los efectos secundarios de mis cambios? \u00bfPor qu\u00e9 esta l\u00ednea de aqu\u00ed afecta a las pruebas de una parte remota del c\u00f3digo base? No existe una soluci\u00f3n perfecta o completa, pero Shopify sac\u00f3 una herramienta que probablemente te ayudar\u00e1 a ti y a tu equipo.<\/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\/es\/blog\/ruby-on-rails-modularizacion-con-packwerk-episodio-i\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/blog\/ruby-on-rails-modularizacion-con-packwerk-episodio-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 minutos\" \/>\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\":\"es\",\"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\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-on-rails-modularization-with-packwerk-episode-i\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\",\"@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\\\/es\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ruby on Rails modularizaci\u00f3n con Packwerk Episodio I - The Codest","description":"A los humanos nos resulta dif\u00edcil ver el panorama general de un problema sin dedicarle mucho tiempo y esfuerzo. Esto ocurre especialmente cuando se trabaja con aplicaciones grandes y complejas. \u00bfCu\u00e1les son los efectos secundarios de mis cambios? \u00bfPor qu\u00e9 esta l\u00ednea de aqu\u00ed afecta a las pruebas de una parte remota del c\u00f3digo base? No existe una soluci\u00f3n perfecta o completa, pero Shopify sac\u00f3 una herramienta que probablemente te ayudar\u00e1 a ti y a tu equipo.","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\/es\/blog\/ruby-on-rails-modularizacion-con-packwerk-episodio-i\/","og_locale":"es_ES","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\/es\/blog\/ruby-on-rails-modularizacion-con-packwerk-episodio-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 minutos"},"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":"es","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 modularizaci\u00f3n con Packwerk Episodio 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":"A los humanos nos resulta dif\u00edcil ver el panorama general de un problema sin dedicarle mucho tiempo y esfuerzo. Esto ocurre especialmente cuando se trabaja con aplicaciones grandes y complejas. \u00bfCu\u00e1les son los efectos secundarios de mis cambios? \u00bfPor qu\u00e9 esta l\u00ednea de aqu\u00ed afecta a las pruebas de una parte remota del c\u00f3digo base? No existe una soluci\u00f3n perfecta o completa, pero Shopify sac\u00f3 una herramienta que probablemente te ayudar\u00e1 a ti y a tu equipo.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ruby-on-rails-modularization-with-packwerk-episode-i\/"]}]},{"@type":"ImageObject","inLanguage":"es","@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":"es"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"es","@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":"es","@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\/es\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/comments?post=3564"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3564\/revisions"}],"predecessor-version":[{"id":7982,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3564\/revisions\/7982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/media\/3565"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/media?parent=3564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/categories?post=3564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/tags?post=3564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}