{"id":6512,"date":"2015-06-09T07:19:52","date_gmt":"2015-06-09T07:19:52","guid":{"rendered":"https:\/\/dev.railscarma.com\/ruby-module-article\/"},"modified":"2025-12-18T11:24:47","modified_gmt":"2025-12-18T11:24:47","slug":"articulo-del-modulo-ruby","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/articulo-del-modulo-ruby\/","title":{"rendered":"Conceptos b\u00e1sicos para crear y utilizar m\u00f3dulos Ruby"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"6512\" class=\"elementor elementor-6512\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-54fe0c61 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"54fe0c61\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-44a03edd\" data-id=\"44a03edd\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7ae3bfac elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"7ae3bfac\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: justify;\"><span style=\"font-size: medium;\"><strong>Ruby on Rails<\/strong> Es un magn\u00edfico marco de trabajo de c\u00f3digo abierto para aplicaciones web \u00abfull-stack\u00bb que da prioridad a las convenciones sobre la configuraci\u00f3n.&nbsp;&nbsp;<\/span><span style=\"font-size: medium;\">Con componentes reutilizables y f\u00e1cilmente configurables que normalmente se utilizan para crear aplicaciones, crear aplicaciones en Rails es m\u00e1s r\u00e1pido y sencillo, lo que se traduce en una mayor productividad y crecimiento empresarial.&nbsp;<\/span><span style=\"font-size: medium;\">Est\u00e1 ganando terreno entre los desarrolladores, ya que es flexible, escalable y f\u00e1cil para los desarrolladores web escribir y mantener aplicaciones.&nbsp;<\/span><\/p><p style=\"text-align: justify;\"><span style=\"font-size: medium;\"><strong><a href=\"https:\/\/rubyonrails.org\/\">Ruby on Rails<\/a><\/strong> Pone \u00e9nfasis en el uso de patrones y principios de ingenier\u00eda conocidos para reducir la carga de trabajo al crear aplicaciones web.&nbsp;<\/span><span style=\"font-size: medium;\">Aunque existen m\u00faltiples m\u00e9todos para resolver un desaf\u00edo de programaci\u00f3n, Ruby profesa confiar en patrones com\u00fanmente utilizados que hacen que los sitios web Rails sean m\u00e1s f\u00e1ciles de mantener y actualizar.&nbsp;<\/span><span style=\"font-size: medium;\">Las bibliotecas de c\u00f3digo abierto con bloques m\u00e1s peque\u00f1os de c\u00f3digo Rails que resuelven problemas particulares se utilizan com\u00fanmente para reducir la sobrecarga de desarrollo.&nbsp;<\/span><span style=\"font-size: medium;\">Con la ayuda de dichos bloques de c\u00f3digo, los desarrolladores pueden insertar gemas estables y bien probadas en lugar de perder tiempo escribiendo el mismo tipo de c\u00f3digos. Una de las herramientas m\u00e1s poderosas en la caja de herramientas de un programador Ruby es el m\u00f3dulo. <b>Rub\u00ed&nbsp;<\/b><\/span><span style=\"font-size: medium;\"><b>M\u00f3dulos<\/b> proporcionar una estructura para agrupar clases, m\u00e9todos y constantes de Ruby en una \u00fanica unidad, con un nombre y una definici\u00f3n propios.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: medium;\">Esto es \u00fatil para evitar conflictos con clases, m\u00e9todos y constantes existentes, y tambi\u00e9n para poder agregar (mezclar) la funcionalidad de los m\u00f3dulos en sus clases.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>Creaci\u00f3n de un m\u00f3dulo en Ruby<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\">Crear un m\u00f3dulo es similar a crear una clase, salvo que se utiliza la palabra clave \u00abmodule\u00bb en lugar de la palabra clave \u00abclass\u00bb.<\/font><\/p>\n<pre style=\"text-align: justify;\">m\u00f3dulo MyFirstModule\n  def say_hello\n    puts \"Hola\"\n  end\nend<font size=\"3\"><\/font><\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Los m\u00f3dulos no se pueden instanciar. Para utilizar un m\u00f3dulo, debes incluirlo o heredarlo dentro de una clase.<\/font><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>Uso de \u00abinclude\u00bb y \u00abextend\u00bb<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\">\n<\/p><ul>\n<li><font size=\"3\"><b>incluir<\/b><\/font><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><font size=\"3\">Incorpora los m\u00e9todos del m\u00f3dulo como m\u00e9todos de instancia de la clase.<\/font><\/p>\n<p style=\"text-align: justify;\">\n<\/p><ul>\n<li><font size=\"3\"><b>ampliar<\/b><\/font><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><font size=\"3\">Incorpora los m\u00e9todos del m\u00f3dulo como m\u00e9todos de la clase.<\/font><\/p>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>Ejemplo<\/b><\/font><\/p>\n<pre style=\"text-align: justify;\">m\u00f3dulo ReusableModule\n  def module_method\n    puts \"M\u00e9todo del m\u00f3dulo: \u00a1Hola!\"\n  end\nend\n\nclase ClassThatIncludes\n  include ReusableModule\nend\n\nclase ClassThatExtends\n  extend ReusableModule\nend\n\nputs \"Incluir\"\nClassThatIncludes.new.module_method\n# =&gt; \"M\u00e9todo del m\u00f3dulo: \u00a1Hola!\"\n\nputs \"Extender\"\nClassThatExtends.module_method\n# =&gt; \"M\u00e9todo del m\u00f3dulo: \u00a1Hola!\"<\/pre>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>Otros conceptos importantes sobre los m\u00f3dulos en Ruby<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>1. Conceptos b\u00e1sicos sobre la b\u00fasqueda de m\u00e9todos:<\/b><\/font><\/p>\n<pre style=\"text-align: justify;\">m\u00f3dulo M\n  def report\n    puts \"'report', m\u00e9todo del m\u00f3dulo M\"\n  end\nend\n\nclase C\n  include M\nend\n\nclase D &lt; C\nend<br>\n<b><\/b>obj = D.new\nobj.report<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>Producci\u00f3n:<\/b><\/font><\/p>\n<pre style=\"text-align: justify;\"><font size=\"3\">'M\u00e9todo 'report\u00bb del m\u00f3dulo M<\/font><\/pre>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>C\u00f3mo funciona la b\u00fasqueda de m\u00e9todos<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\">Cuando un objeto de Ruby recibe un mensaje (una llamada a un m\u00e9todo), busca el m\u00e9todo en este orden:<\/font><\/p>\n<ol>\n<li>La clase \u00abobjetos\u00bb (D)<\/li>\n<li><font size=\"3\">M\u00f3dulos incluidos en la asignatura (D)<\/font><\/li>\n<li><font size=\"3\">La superclase (C)<\/font><\/li>\n<li><font size=\"3\">M\u00f3dulos incluidos en la superclase (M)<\/font><\/li>\n<li><font size=\"3\">Continuar subiendo por la cadena de sucesi\u00f3n<\/font><\/li>\n<\/ol>\n<p style=\"text-align: justify;\"><font size=\"3\">En este caso:<\/font><\/p>\n<p style=\"text-align: justify;\">\n<\/p><ul>\n<li><font size=\"3\">D no define el informe<\/font><\/li>\n<li><span style=\"font-size: 16px;\">En C no se define \u00abreport\u00bb<\/span><\/li>\n<li><span style=\"font-size: 16px;\">C incluye el m\u00f3dulo M<\/span><\/li>\n<li><span style=\"font-size: 16px;\">M define el informe, por lo que Ruby lo ejecuta<\/span><\/li>\n<\/ul>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>2. Definir el mismo m\u00e9todo m\u00e1s de una vez<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\">Si un m\u00e9todo se define varias veces, prevalece la \u00faltima definici\u00f3n. Esto se aplica tanto a las clases como a los m\u00f3dulos.<\/font><\/p>\n<pre style=\"text-align: justify;\">m\u00f3dulo InterestBearing\n  def calcular_intereses\n    puts \"\u00a1Marca de posici\u00f3n! Estamos en el m\u00f3dulo InterestBearing.\"\n  end\nend\n\nclase BankAccount\n  include InterestBearing\n\n  def calcular_intereses\n    puts \"\u00a1Marca de posici\u00f3n! Estamos en la clase BankAccount.\"\n    puts \"\u00a1Y estamos sobrescribiendo el m\u00e9todo calculate_interest!\"\n  end\nend\n\ncuenta = BankAccount.new\ncuenta.calculate_interest<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Producci\u00f3n:<\/font><\/p>\n<pre style=\"text-align: justify;\"><font size=\"3\">\u00a1Marca de posici\u00f3n! Estamos en la clase \u00abBankAccount\u00bb.<br><\/font><font size=\"3\">\u00a1Y estamos sobrescribiendo el m\u00e9todo `calculate_interest`!<\/font><\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">El m\u00e9todo de clase anula el m\u00e9todo del m\u00f3dulo.<\/font><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>3. Incorporaci\u00f3n de varios m\u00f3dulos de Ruby con el mismo nombre de m\u00e9todo<\/b><\/font><\/h2>\n<pre style=\"text-align: justify;\">m\u00f3dulo M\n  def report\n    puts \"M\u00e9todo 'report' en el m\u00f3dulo M\"\n  end\nend\n\nm\u00f3dulo N\n  def report\n    puts \"M\u00e9todo 'report' en el m\u00f3dulo N\"\n  end\nend\n\nclass C\n  include M\n  include N\nend\n\nc = C.new\nc.report<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Producci\u00f3n:<\/font><\/p>\n<pre style=\"text-align: justify;\"><font size=\"3\">'M\u00e9todo 'report\u00bb del m\u00f3dulo N<\/font><\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">El \u00faltimo m\u00f3dulo incluido tiene prioridad porque aparece en primer lugar en la ruta de b\u00fasqueda de m\u00e9todos.<\/font><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>4. C\u00f3mo incluir un m\u00f3dulo de Ruby m\u00e1s de una vez<\/b><\/font><\/h2>\n<pre style=\"text-align: justify;\">clase C\n  include M\n  include N\n  include M\nfin\n\nc = C.new\nc.report<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Producci\u00f3n:<\/font><\/p>\n<pre style=\"text-align: justify;\"><font size=\"3\">'M\u00e9todo 'report\u00bb del m\u00f3dulo N<\/font><\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>Explicaci\u00f3n<\/b><\/font><\/p>\n<p style=\"text-align: justify;\"><font size=\"3\">Volver a incluir un m\u00f3dulo no tiene ning\u00fan efecto si este ya se encuentra en la ruta de b\u00fasqueda. Ruby no lo vuelve a colocar al principio. El m\u00f3dulo nuevo (N) incluido m\u00e1s recientemente sigue teniendo prioridad.<\/font><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>5. Uso de \u00absuper\u00bb con los m\u00f3dulos de Ruby<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\">La palabra clave \u00absuper\u00bb te permite llamar al m\u00e9todo siguiente en la cadena de b\u00fasqueda de m\u00e9todos.<\/font><\/p>\n<pre style=\"text-align: justify;\">m\u00f3dulo M\n  def report\n    puts \"M\u00e9todo 'report' en el m\u00f3dulo M\"\n  end\nend\n\nclase C\n  include M\n\n  def report\n    puts \"M\u00e9todo 'report' en la clase C\"\n    puts \"A punto de activar el m\u00e9todo \"report\" de nivel superior...'\n    super\n    puts 'De vuelta de la llamada a \"super'.\"\n  end\nend\n\nc = C.new\nc.report<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Producci\u00f3n:<\/font><\/p>\n<pre style=\"text-align: justify;\">'M\u00e9todo 'report' de la clase C\nA punto de activar el m\u00e9todo 'report' del nivel superior...\nM\u00e9todo 'report\u00bb del m\u00f3dulo M\nDe vuelta tras la llamada a \u00absuper\u00bb.<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>\u00bfQu\u00e9 pasa aqu\u00ed?<\/b><\/font><\/p>\n<p style=\"text-align: justify;\">\n<\/p><ul>\n<li><font size=\"3\">Ruby ejecuta primero \u00abreport\u00bb en la clase C<\/font><\/li>\n<li><span style=\"font-size: 16px;\">\u00absuper\u00bb invoca el siguiente m\u00e9todo de informe de la cadena de b\u00fasqueda (del m\u00f3dulo M)<\/span><\/li>\n<li><span style=\"font-size: 16px;\">A continuaci\u00f3n, el control vuelve al m\u00e9todo de clase<\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><span style=\"font-size: medium;\"><a href=\"https:\/\/www.railscarma.com\/es\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>RielesCarma<\/strong><\/a> ha estado trabajando en RoR desde su etapa inicial y con una s\u00f3lida fuerza laboral capacitada en RoR, ha crecido hasta convertirse en un nombre altamente confiable en consultor\u00eda, arquitectura, construcci\u00f3n, administraci\u00f3n y extensi\u00f3n de Ruby on Rails para empresas de todo el mundo.&nbsp;<\/span><\/p>\n<p style=\"text-align: justify;\"><em><b>Leer m\u00e1s :&nbsp;<\/b><\/em><\/p>\n<ul>\n<li><a href=\"\/es\/blog\/articulos-tecnicos\/implementando-tinymce-en-ruby-on-rails\/\" target=\"_blank\" rel=\"noopener noreferrer\">Implementaci\u00f3n de TinyMCE en Ruby on Rails<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"\/es\/blog\/articulos-tecnicos\/comprender-el-complemento-de-canalizacion-de-activos\/\" target=\"_blank\" rel=\"noopener noreferrer\">Comprensi\u00f3n del complemento de canalizaci\u00f3n de activos<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"\/es\/blog\/articulos-tecnicos\/polymorphic-associations-with-active-record\/\" target=\"_blank\" rel=\"noopener noreferrer\">Asociaciones polim\u00f3rficas con registro activo<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"\/es\/blog\/articulos-tecnicos\/una-forma-sencilla-de-aumentar-el-rendimiento-de-tu-aplicacion-rails-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">Una forma sencilla de aumentar el rendimiento de su aplicaci\u00f3n Rails<\/a><\/li>\n<\/ul>\n<p><a href=\"\/es\/contactenos\/\">P\u00f3ngase en contacto con nosotros.<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-20ee20d1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"20ee20d1\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-266aac31\" data-id=\"266aac31\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-201a5cf elementor-widget elementor-widget-heading\" data-id=\"201a5cf\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Suscr\u00edbete para recibir las \u00faltimas actualizaciones<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3a85013 elementor-widget elementor-widget-shortcode\" data-id=\"3a85013\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"cargador\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"e314d52b89\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"Direcci\u00f3n de correo electr\u00f3nico\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"Nombre\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"Suscribir\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"es\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Art\u00edculos Relacionados<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"gema kaminari\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n        Gema Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"por qu\u00e9 contratar desarrolladores de Ruby on Rails en 2022\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n        \u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Extracci\u00f3n de datos en rieles mediante procesamiento CSV\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/raspado-de-datos-en-rieles-mediante-el-procesamiento-de-csv\/?related_post_from=31591\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png\" class=\"attachment-full size-full wp-post-image\" alt=\"\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV-768x288.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Extracci\u00f3n de datos en rieles mediante procesamiento CSV\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/raspado-de-datos-en-rieles-mediante-el-procesamiento-de-csv\/?related_post_from=31591\">\r\n        Extracci\u00f3n de datos en rieles mediante procesamiento CSV  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Realice llamadas de voz a trav\u00e9s de aplicaciones web Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/realizar-llamadas-de-voz-a-traves-de-aplicaciones-web-ruby-on-rails\/?related_post_from=31309\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/07\/MAKE-VOICE-CALLS-THROUGH-RUBY-ON-RAILS-WEB-APPLICATIONS.png\" class=\"attachment-full size-full wp-post-image\" alt=\"\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/07\/MAKE-VOICE-CALLS-THROUGH-RUBY-ON-RAILS-WEB-APPLICATIONS.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/07\/MAKE-VOICE-CALLS-THROUGH-RUBY-ON-RAILS-WEB-APPLICATIONS-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/07\/MAKE-VOICE-CALLS-THROUGH-RUBY-ON-RAILS-WEB-APPLICATIONS-768x288.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Realice llamadas de voz a trav\u00e9s de aplicaciones web Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/realizar-llamadas-de-voz-a-traves-de-aplicaciones-web-ruby-on-rails\/?related_post_from=31309\">\r\n        Realice llamadas de voz a trav\u00e9s de aplicaciones web Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>Ruby on Rails es un maravilloso framework de aplicaciones web full-stack de c\u00f3digo abierto que favorece la convenci\u00f3n sobre la configuraci\u00f3n.  Con componentes reutilizables y f\u00e1cilmente configurables que se utilizan normalmente para crear aplicaciones, la creaci\u00f3n de aplicaciones en Rails es m\u00e1s r\u00e1pida y sencilla, lo que se traduce en una mejora de la productividad y el crecimiento empresarial. Est\u00e1 ganando adeptos entre los desarrolladores, ya que es flexible, escalable y f\u00e1cil para los desarrolladores web ...<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/es\/blog\/guide-to-llm-integration-with-ruby-on-rails\/\"> <span class=\"screen-reader-text\">A CTO\u2019s Guide to LLM Integration with Ruby on Rails<\/span> Leer m\u00e1s \u00bb<\/a><\/p>","protected":false},"author":1,"featured_media":32034,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[385,455,384],"tags":[389,421,636,382,637],"class_list":["post-6512","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-management","category-rails-3","category-technical-articles","tag-rails","tag-ror","tag-ruby-module","tag-ruby-on-rails","tag-ruby-on-rails-development-company"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Basics of Creating and Using Ruby Modules - RailsCarma<\/title>\n<meta name=\"description\" content=\"Learn the basics of creating and using modules in Ruby on Rails to organize code improve reuse and keep applications clean and maintainable.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/articulo-del-modulo-ruby\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Basics of Creating and Using Ruby Modules - RailsCarma\" \/>\n<meta property=\"og:description\" content=\"Learn the basics of creating and using modules in Ruby on Rails to organize code improve reuse and keep applications clean and maintainable.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/articulo-del-modulo-ruby\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-09T07:19:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-18T11:24:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"The Basics of Creating and Using Ruby Modules\",\"datePublished\":\"2015-06-09T07:19:52+00:00\",\"dateModified\":\"2025-12-18T11:24:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/\"},\"wordCount\":631,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg\",\"keywords\":[\"rails\",\"ror\",\"ruby module\",\"Ruby on rails\",\"ruby on rails development company\"],\"articleSection\":[\"Articles on Management\",\"Rails 3\",\"Technical Articles\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/\",\"name\":\"The Basics of Creating and Using Ruby Modules - RailsCarma\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg\",\"datePublished\":\"2015-06-09T07:19:52+00:00\",\"dateModified\":\"2025-12-18T11:24:47+00:00\",\"description\":\"Learn the basics of creating and using modules in Ruby on Rails to organize code improve reuse and keep applications clean and maintainable.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Basics of Creating and Using Ruby Modules\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Conceptos b\u00e1sicos sobre la creaci\u00f3n y el uso de m\u00f3dulos en Ruby - RailsCarma","description":"Aprende los conceptos b\u00e1sicos para crear y utilizar m\u00f3dulos en Ruby on Rails con el fin de organizar el c\u00f3digo, mejorar su reutilizaci\u00f3n y mantener las aplicaciones limpias y f\u00e1ciles de mantener.","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:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/articulo-del-modulo-ruby\/","og_locale":"es_ES","og_type":"article","og_title":"The Basics of Creating and Using Ruby Modules - RailsCarma","og_description":"Learn the basics of creating and using modules in Ruby on Rails to organize code improve reuse and keep applications clean and maintainable.","og_url":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/articulo-del-modulo-ruby\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2015-06-09T07:19:52+00:00","article_modified_time":"2025-12-18T11:24:47+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"The Basics of Creating and Using Ruby Modules","datePublished":"2015-06-09T07:19:52+00:00","dateModified":"2025-12-18T11:24:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/"},"wordCount":631,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg","keywords":["rails","ror","ruby module","Ruby on rails","ruby on rails development company"],"articleSection":["Articles on Management","Rails 3","Technical Articles"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/","url":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/","name":"Conceptos b\u00e1sicos sobre la creaci\u00f3n y el uso de m\u00f3dulos en Ruby - RailsCarma","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg","datePublished":"2015-06-09T07:19:52+00:00","dateModified":"2025-12-18T11:24:47+00:00","description":"Aprende los conceptos b\u00e1sicos para crear y utilizar m\u00f3dulos en Ruby on Rails con el fin de organizar el c\u00f3digo, mejorar su reutilizaci\u00f3n y mantener las aplicaciones limpias y f\u00e1ciles de mantener.","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/06\/blog_rc3.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"The Basics of Creating and Using Ruby Modules"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Empresa de desarrollo Ruby on Rails especializada en desarrollo offshore","description":"RailsCarma es una empresa de desarrollo de Ruby on Rails en Bangalore. Nos especializamos en el desarrollo offshore de Ruby on Rails con sede en EE. UU. e India. Contrate desarrolladores experimentados de Ruby on Rails para disfrutar de la mejor experiencia web.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RielesCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"administraci\u00f3n","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/6512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/comments?post=6512"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/6512\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media\/32034"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media?parent=6512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/categories?post=6512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/tags?post=6512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}