{"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":"ruby-modul-artikel","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/ruby-modul-artikel\/","title":{"rendered":"Grunderna i att skapa och anv\u00e4nda Ruby-moduler"},"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> \u00e4r ett fantastiskt ramverk f\u00f6r fullstack-webbapplikationer med \u00f6ppen k\u00e4llkod som prioriterar konventioner framf\u00f6r konfiguration.&nbsp;&nbsp;<\/span><span style=\"font-size: medium;\">Med \u00e5teranv\u00e4ndbara, l\u00e4tt konfigurerbara komponenter som normalt anv\u00e4nds f\u00f6r att skapa applikationer g\u00e5r det snabbare och enklare att bygga applikationer i Rails, vilket resulterar i f\u00f6rb\u00e4ttrad produktivitet och aff\u00e4rstillv\u00e4xt.&nbsp;<\/span><span style=\"font-size: medium;\">Det vinner inflytande bland utvecklare eftersom det \u00e4r flexibelt, skalbart och enkelt f\u00f6r webbutvecklare att skriva och underh\u00e5lla applikationer.&nbsp;<\/span><\/p><p style=\"text-align: justify;\"><span style=\"font-size: medium;\"><strong><a href=\"https:\/\/rubyonrails.org\/\">Ruby on Rails<\/a><\/strong> l\u00e4gger tonvikten p\u00e5 att anv\u00e4nda k\u00e4nda tekniska m\u00f6nster och principer f\u00f6r att minska arbetsbelastningen n\u00e4r man bygger webbapplikationer.&nbsp;<\/span><span style=\"font-size: medium;\">\u00c4ven om det finns flera metoder f\u00f6r att l\u00f6sa en programmeringsutmaning, s\u00e4ger Ruby sig f\u00f6rlita sig p\u00e5 vanliga m\u00f6nster som g\u00f6r Rails webbplatser l\u00e4ttare att underh\u00e5lla och uppgradera.&nbsp;<\/span><span style=\"font-size: medium;\">Bibliotek med \u00f6ppen k\u00e4llkod med mindre block av Rails-kod som l\u00f6ser s\u00e4rskilda problem anv\u00e4nds vanligtvis f\u00f6r att minska utvecklingskostnader.&nbsp;<\/span><span style=\"font-size: medium;\">Med hj\u00e4lp av s\u00e5dana kodblock kan utvecklare infoga stabila, v\u00e4l bepr\u00f6vade \u00e4delstenar ist\u00e4llet f\u00f6r att l\u00e4gga tid p\u00e5 att skriva samma slags koder. Ett av de mest kraftfulla verktygen i en Ruby-programmerares verktygsl\u00e5da \u00e4r modulen. <b>Rubin&nbsp;<\/b><\/span><span style=\"font-size: medium;\"><b>Moduler<\/b> tillhandah\u00e5lla en struktur f\u00f6r att samla Ruby-klasser, metoder och konstanter i en enda enhet med eget namn och egen definition.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: medium;\">Detta \u00e4r anv\u00e4ndbart s\u00e5 att du kan undvika konflikter med befintliga klasser, metoder och konstanter, och \u00e4ven s\u00e5 att du kan l\u00e4gga till (mixa in) modulernas funktionalitet i dina klasser.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>Skapa en modul i Ruby<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\">Att skapa en modul g\u00e5r till p\u00e5 ungef\u00e4r samma s\u00e4tt som att skapa en klass, med den skillnaden att man anv\u00e4nder nyckelordet \u201dmodule\u201d ist\u00e4llet f\u00f6r nyckelordet \u201dclass\u201d.<\/font><\/p>\n<pre style=\"text-align: justify;\">modul MyFirstModule\n  def say_hello\n    puts \"Hello\"\n  end\nend<font size=\"3\"><\/font><\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Moduler kan inte instansieras. F\u00f6r att anv\u00e4nda en modul m\u00e5ste du antingen inkludera den eller ut\u00f6ka den inom en klass.<\/font><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>Anv\u00e4ndning av include och extend<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\">\n<\/p><ul>\n<li><font size=\"3\"><b>inkludera<\/b><\/font><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><font size=\"3\">Inf\u00f6rlivar modulens metoder som instansmetoder i klassen.<\/font><\/p>\n<p style=\"text-align: justify;\">\n<\/p><ul>\n<li><font size=\"3\"><b>f\u00f6rl\u00e4nga<\/b><\/font><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><font size=\"3\">Inf\u00f6rlivar modulens metoder som klassmetoder i klassen.<\/font><\/p>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>Exempel<\/b><\/font><\/p>\n<pre style=\"text-align: justify;\">modul ReusableModule\n  def module_method\n    puts \"Modulmetod: Hej!\"\n  end\nend\n\nklass ClassThatIncludes\n  include ReusableModule\nend\n\nklass ClassThatExtends\n  extend ReusableModule\nend\n\nputs \"Inkludera\"\nClassThatIncludes.new.module_method\n# =&gt; \"Modulmetod: Hej!\"\n\nputs \"Ut\u00f6ka\"\nClassThatExtends.module_method\n# =&gt; \"Modulmetod: Hej!\"<\/pre>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>Andra viktiga begrepp om moduler i Ruby<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>1. Grunderna i metoduppslag:<\/b><\/font><\/p>\n<pre style=\"text-align: justify;\">modul M\n  def report\n    puts \"'report'-metoden i modul M\"\n  end\nend\n\nklass C\n  include M\nend\n\nklass D &lt; C\nend<br>\n<b><\/b>obj = D.new\nobj.report<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>Produktion:<\/b><\/font><\/p>\n<pre style=\"text-align: justify;\"><font size=\"3\">'Metoden 'report\u201d i modulen M<\/font><\/pre>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>Hur metoduppslag fungerar<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\">N\u00e4r ett Ruby-objekt tar emot ett meddelande (metodanrop) s\u00f6ker det efter metoden i f\u00f6ljande ordning:<\/font><\/p>\n<ol>\n<li>Objektklassen (D)<\/li>\n<li><font size=\"3\">Moduler som ing\u00e5r i kursen (D)<\/font><\/li>\n<li><font size=\"3\">\u00d6verklassen (C)<\/font><\/li>\n<li><font size=\"3\">Moduler som ing\u00e5r i superklassen (M)<\/font><\/li>\n<li><font size=\"3\">Forts\u00e4tt upp\u00e5t i arvskedjan<\/font><\/li>\n<\/ol>\n<p style=\"text-align: justify;\"><font size=\"3\">I det h\u00e4r fallet:<\/font><\/p>\n<p style=\"text-align: justify;\">\n<\/p><ul>\n<li><font size=\"3\">D definierar inte rapporten<\/font><\/li>\n<li><span style=\"font-size: 16px;\">I C finns ingen definition av \u201dreport\u201d<\/span><\/li>\n<li><span style=\"font-size: 16px;\">C inneh\u00e5ller modulen M<\/span><\/li>\n<li><span style=\"font-size: 16px;\">M definierar rapporten, s\u00e5 Ruby k\u00f6r den<\/span><\/li>\n<\/ul>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>2. Att definiera samma metod mer \u00e4n en g\u00e5ng<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\">Om en metod definieras flera g\u00e5nger har den sista definitionen f\u00f6retr\u00e4de. Detta g\u00e4ller b\u00e5de klasser och moduler.<\/font><\/p>\n<pre style=\"text-align: justify;\">modul InterestBearing\n  def calculate_interest\n    puts \"Platsh\u00e5llare! Vi befinner oss i modulen InterestBearing.\"\n  end\nend\n\nklass BankAccount\n  include InterestBearing\n\n  def calculate_interest\n    puts \"Platsh\u00e5llare! Vi befinner oss i klassen BankAccount.\"\n    puts \"Och vi \u00f6verskriver metoden calculate_interest!\"\n  end\nend\n\naccount = BankAccount.new\naccount.calculate_interest<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Produktion:<\/font><\/p>\n<pre style=\"text-align: justify;\"><font size=\"3\">Platsh\u00e5llare! Vi befinner oss i klassen BankAccount.<br><\/font><font size=\"3\">Och vi \u00f6verskriver metoden `calculate_interest`!<\/font><\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Klassmetoden \u00e5sidos\u00e4tter modulmetoden.<\/font><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>3. Att blanda in flera Ruby-moduler med samma metodnamn<\/b><\/font><\/h2>\n<pre style=\"text-align: justify;\">modul M\n  def report\n    puts \"'report'-metoden i modul M\"\n  end\nend\n\nmodul N\n  def report\n    puts \"'report'-metoden i modul 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\">Produktion:<\/font><\/p>\n<pre style=\"text-align: justify;\"><font size=\"3\">'Metoden 'report\u201d i modulen N<\/font><\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Den senast inkluderade modulen vinner eftersom den f\u00f6rekommer f\u00f6rst i metods\u00f6kv\u00e4gen.<\/font><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>4. Att inkludera en Ruby-modul mer \u00e4n en g\u00e5ng<\/b><\/font><\/h2>\n<pre style=\"text-align: justify;\">klass C\n  include M\n  include N\n  include M\nslut\n\nc = C.new\nc.report<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Produktion:<\/font><\/p>\n<pre style=\"text-align: justify;\"><font size=\"3\">'Metoden 'report\u201d i modulen N<\/font><\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>F\u00f6rklaring<\/b><\/font><\/p>\n<p style=\"text-align: justify;\"><font size=\"3\">Att inkludera en modul p\u00e5 nytt har ingen effekt om modulen redan finns i s\u00f6kv\u00e4gen. Ruby flyttar inte upp den till toppen igen. Den senast inkluderade nya modulen (N) har fortfarande f\u00f6retr\u00e4de.<\/font><\/p>\n<h2 style=\"text-align: justify;\"><font size=\"3\"><b>5. Att anv\u00e4nda super med Ruby-moduler<\/b><\/font><\/h2>\n<p style=\"text-align: justify;\"><font size=\"3\">Med nyckelordet \u201dsuper\u201d kan du anropa n\u00e4sta metod i metoduppslagskedjan.<\/font><\/p>\n<pre style=\"text-align: justify;\">modul M\n  def report\n    puts \"'report'-metoden i modul M\"\n  end\nend\n\nklass C\n  include M\n\n  def report\n    puts \"'report'-metoden i klass C\"\n    puts \"Ska nu anropa n\u00e4sta \u00f6verordnade \"report\"-metod...'\n    super\n    puts 'Tillbaka fr\u00e5n \"super'-anropet.\"\n  end\nend\n\nc = C.new\nc.report<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\">Produktion:<\/font><\/p>\n<pre style=\"text-align: justify;\">'Metoden 'report' i klassen C\nSka just anropa den n\u00e4rmast \u00f6verordnade rapportmetoden...\nMetoden 'report' i modulen M\nTillbaka fr\u00e5n 'super\u201d-anropet.<\/pre>\n<p style=\"text-align: justify;\"><font size=\"3\"><b>Vad h\u00e4nder h\u00e4r?<\/b><\/font><\/p>\n<p style=\"text-align: justify;\">\n<\/p><ul>\n<li><font size=\"3\">Ruby k\u00f6r f\u00f6rst rapporten i klass C<\/font><\/li>\n<li><span style=\"font-size: 16px;\">super anropar n\u00e4sta rapportmetod i uppslagskedjan (fr\u00e5n modul M)<\/span><\/li>\n<li><span style=\"font-size: 16px;\">Kontrollen \u00e5terg\u00e5r sedan till klassmetoden<\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><span style=\"font-size: medium;\"><a href=\"https:\/\/www.railscarma.com\/sv\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>RailsCarma<\/strong><\/a> har arbetat p\u00e5 RoR fr\u00e5n b\u00f6rjan och med en stark arbetsstyrka utbildad i RoR har det vuxit till att bli ett mycket p\u00e5litligt namn i slut\u00e4ndan Ruby on Rails konsulttj\u00e4nster, arkitektur, byggnad, f\u00f6rvaltning och utbyggnad till f\u00f6retag runt om i v\u00e4rlden.&nbsp;<\/span><\/p>\n<p style=\"text-align: justify;\"><em><b>L\u00e4s mer :&nbsp;<\/b><\/em><\/p>\n<ul>\n<li><a href=\"\/sv\/blogg\/tekniska-artiklar\/implementera-tinymce-i-ruby-on-rails\/\" target=\"_blank\" rel=\"noopener noreferrer\">Implementering av TinyMCE i Ruby on Rails<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"\/sv\/blogg\/tekniska-artiklar\/forsta-plugin-programmet-for-tillgangspipeline\/\" target=\"_blank\" rel=\"noopener noreferrer\">F\u00f6rst\u00e5 Asset Pipeline Plugin<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"\/sv\/blogg\/tekniska-artiklar\/polymorphic-associations-with-active-record\/\" target=\"_blank\" rel=\"noopener noreferrer\">Polymorfa associationer med aktiva rekord<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"\/sv\/blogg\/tekniska-artiklar\/ett-enkelt-satt-att-oka-prestandan-for-din-rails-app-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ett enkelt s\u00e4tt att \u00f6ka prestandan f\u00f6r din Rails-app<\/a><\/li>\n<\/ul>\n<p><a href=\"\/sv\/kontakta-oss\/\">Kontakta oss.<\/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\">Prenumerera f\u00f6r de senaste uppdateringarna<\/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=\"lastare\"><\/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=\"E-postadress\">\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=\"namn\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"Prenumerera\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"sv\"\/><\/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\">relaterade inl\u00e4gg<\/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=\"Kaminari Gem\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/kaminari-parla\/?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=\"kaminari p\u00e4rla\" 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=\"Kaminari Gem\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/kaminari-parla\/?related_post_from=37277\">\r\n        Kaminari Gem  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/varfor-anlita-utvecklare-av-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=\"varf\u00f6r anlita utvecklare av ruby on rails 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=\"Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/varfor-anlita-utvecklare-av-ruby-on-rails\/?related_post_from=30627\">\r\n        Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Dataskrapning i skenor genom att bearbeta CSV\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/dataskrapning-i-skenor-genom-att-bearbeta-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=\"Dataskrapning i skenor genom att bearbeta CSV\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/dataskrapning-i-skenor-genom-att-bearbeta-csv\/?related_post_from=31591\">\r\n        Dataskrapning i skenor genom att bearbeta CSV  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ring r\u00f6stsamtal genom Ruby on Rails webbapplikationer\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/ringa-rostsamtal-genom-ruby-on-rails-webbapplikationer\/?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=\"Ring r\u00f6stsamtal genom Ruby on Rails webbapplikationer\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/ringa-rostsamtal-genom-ruby-on-rails-webbapplikationer\/?related_post_from=31309\">\r\n        Ring r\u00f6stsamtal genom Ruby on Rails webbapplikationer  <\/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 \u00e4r ett fantastiskt open source-ramverk f\u00f6r fullstack-webbapplikationer som prioriterar konventioner framf\u00f6r konfiguration.  Tack vare \u00e5teranv\u00e4ndbara och l\u00e4ttkonfigurerbara komponenter som vanligtvis anv\u00e4nds f\u00f6r att skapa applikationer g\u00e5r det snabbare och enklare att bygga applikationer i Rails, vilket leder till \u00f6kad produktivitet och tillv\u00e4xt f\u00f6r f\u00f6retaget. Det blir allt popul\u00e4rare bland utvecklare eftersom det \u00e4r flexibelt, skalbart och l\u00e4tt att anv\u00e4nda f\u00f6r webbutvecklare \u2026<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/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> L\u00e4s mer \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\/sv\/blogg\/tekniska-artiklar\/ruby-modul-artikel\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/blogg\/tekniska-artiklar\/ruby-modul-artikel\/\" \/>\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=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuter\" \/>\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\":\"sv-SE\",\"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\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\",\"@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":"Grunderna i att skapa och anv\u00e4nda Ruby-moduler \u2013 RailsCarma","description":"L\u00e4r dig grunderna i att skapa och anv\u00e4nda moduler i Ruby on Rails f\u00f6r att strukturera koden, f\u00f6rb\u00e4ttra \u00e5teranv\u00e4ndbarheten och se till att applikationerna f\u00f6rblir \u00f6versk\u00e5dliga och l\u00e4tta att underh\u00e5lla.","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\/sv\/blogg\/tekniska-artiklar\/ruby-modul-artikel\/","og_locale":"sv_SE","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\/sv\/blogg\/tekniska-artiklar\/ruby-modul-artikel\/","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":{"Skriven av":"admin","Ber\u00e4knad l\u00e4stid":"3 minuter"},"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":"sv-SE","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":"Grunderna i att skapa och anv\u00e4nda Ruby-moduler \u2013 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":"L\u00e4r dig grunderna i att skapa och anv\u00e4nda moduler i Ruby on Rails f\u00f6r att strukturera koden, f\u00f6rb\u00e4ttra \u00e5teranv\u00e4ndbarheten och se till att applikationerna f\u00f6rblir \u00f6versk\u00e5dliga och l\u00e4tta att underh\u00e5lla.","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/ruby-module-article\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@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 specialiserat p\u00e5 Offshore Development","description":"RailsCarma \u00e4r ett Ruby on Rails Development Company i Bangalore. Vi \u00e4r specialiserade p\u00e5 Offshore Ruby on Rails Development baserat i USA och Indien. Anst\u00e4ll erfarna Ruby on Rails-utvecklare f\u00f6r den ultimata webbupplevelsen.","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":"sv-SE"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@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":"administration","image":{"@type":"ImageObject","inLanguage":"sv-SE","@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\/sv\/wp-json\/wp\/v2\/posts\/6512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/comments?post=6512"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/posts\/6512\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/media\/32034"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/media?parent=6512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/categories?post=6512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/tags?post=6512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}