{"id":3560,"date":"2019-09-03T07:23:00","date_gmt":"2019-09-03T07:23:00","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/"},"modified":"2026-04-27T09:52:00","modified_gmt":"2026-04-27T09:52:00","slug":"rubins-3-0-rubins-un-mazak-zinamas-privatuma-kontroles-metodes","status":"publish","type":"post","link":"https:\/\/thecodest.co\/lv\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/","title":{"rendered":"Rub\u012bns 3.0. Ruby un maz\u0101k zin\u0101mas priv\u0101tuma kontroles metodes"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Pamata risin\u0101jumi<\/h2>\n\n\n\n<p>Pie\u0146emsim, ka m\u0113s izmantojam klasi Foo, kurai ir viena publisk\u0101 metode un viena priv\u0101t\u0101 metode:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  def bar\n    :awesome\n  beigas\n\n  priv\u0101ts\n\n  def baz\n    :something_private\n  beigas\nend<\/code><\/pre>\n\n\n\n<p>Viss ir lieliski, m\u0113s redzam \u0161\u0101du risin\u0101jumu praktiski katr\u0101 <a href=\"https:\/\/thecodest.co\/lv\/dictionary\/why-do-projects-fail\/\">projekts<\/a>. Darbojas <code>Foo.new.baz<\/code> izrais\u012bs k\u013c\u016bdu <em>NoMethodError (priv\u0101t\u0101 metode \u2018baz\u2019 izsaukta # )<\/em> un to m\u0113s ar\u012b grib\u0113j\u0101m dar\u012bt. Kas notiks, ja m\u0113s m\u0113\u0123in\u0101sim main\u012bt saglab\u0101\u0161anas form\u0101tu un klases defin\u012bcij\u0101 k\u0101 prefiksu pievienosim private?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  def bar\n    :awesome\n  beigas\n\n  priv\u0101ts def baz\n    :something_private\n  end\nend<\/code><\/pre>\n\n\n\n<p>K\u0101 redzat p\u0113c <a href=\"https:\/\/thecodest.co\/lv\/dictionary\/what-is-code-refactoring\/\">kods<\/a>, tas patie\u0161\u0101m darbojas! K\u0101p\u0113c m\u0113s varam ievad\u012bt metodes redzam\u012bbu pirms t\u0101s veik\u0161anas? T\u0101p\u0113c, ka, defin\u0113jot metodi, def atgrie\u017e metodes nosaukumu k\u0101 simbolu. \u0160\u012b izteiksme ir ne tikai sintakses da\u013ca, bet de facto metode, kas atvasin\u0101ta no klases Module un \u0161o simbolu uzskata par argumentu. Lai ieg\u016btu vair\u0101k inform\u0101cijas, l\u016bdzu, skatiet dokument\u0101ciju <a href=\"https:\/\/ruby-doc.org\/core-3.0.0\/Module.html#method-i-private\">\u0161aj\u0101 sait\u0113<\/a>. T\u0101 k\u0101 ar priv\u0101to metodi tas s\u0101k\u0101s tik vienk\u0101r\u0161i, m\u0113\u0123in\u0101sim main\u012bt priv\u0101t\u0101s metodes redzam\u012bbu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  def bar\n    :awesome\n  beigas\n\n  priv\u0101ts def baz\n    :something_private\n  end\n\n  public :baz\nend<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Kas notiks p\u0113c koda palai\u0161anas?<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">irb(main):012:0&gt; Foo.new.baz\n=&gt; :something_private<\/code><\/pre>\n\n\n\n<p>Pan\u0101kumi! M\u016bsu b\u0101zu metode k\u013cuva publiski pieejama, jo m\u0113s to padar\u012bj\u0101m redzamu divreiz. Protams, t\u0101da pati darb\u012bba attiecas ar\u012b uz modu\u013ciem.<br>\u200b<br>Lieliski, bet kur tas nok\u013c\u016bst <a href=\"https:\/\/thecodest.co\/lv\/blog\/why-us-companies-are-opting-for-polish-developers\/\">mums<\/a>?<br>\u200b<br>\u0160\u012b funkcionalit\u0101te dod mums daudz, jo m\u0113s varam br\u012bvi main\u012bt metodes redzam\u012bbu, to defin\u0113jot, vai pat main\u012bt meto\u017eu redzam\u012bbu, t\u0101s mantojot.<\/p>\n\n\n\n<p>Tagad apl\u016bkosim, ko <a href=\"https:\/\/thecodest.co\/lv\/blog\/hire-ror-developer\/\">Rub\u012bns<\/a> 2.7 var main\u012bt aizst\u0101jv\u0101rdu un piek\u013cuves v\u0101rdu redzam\u012bbu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  priv\u0101tais attr_accessor :awesome_variable\nbeigas<\/code><\/pre>\n\n\n\n<p>Diem\u017e\u0113l tiek pie\u013cauta k\u013c\u016bda, jo priv\u0101t\u0101 metode sagaida simbolus un attr_accessor. Kods atgrie\u017e nil, un t\u0101d\u0113j\u0101di \u0161\u012b metode nav sader\u012bga ar Ruby 2.7 priv\u0101to izmanto\u0161anu. K\u0101das ir m\u016bsu iesp\u0113jas?<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>M\u0113s varam izmantot attr_accessor zem atsl\u0113gv\u0101rda private, lai tas darbotos, t. i., m\u0113s sa\u0146emsim k\u013c\u016bdu, kad m\u0113s grib\u0113sim atsaukties uz <code>lielisks_main\u012bgaislielisks_main\u012bgais<\/code> metode.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  priv\u0101ts\n\n  attr_accessor :awesome_variable\nbeigas<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Otra iesp\u0113ja ir izpild\u012bt priv\u0101to metodi metod\u0113m, ko \u0123ener\u0113 <code>attr_attribute<\/code>; \u0161aj\u0101 gad\u012bjum\u0101 mums ar\u012b j\u0101atceras, ka tur ir j\u0101ievada iestat\u012bt\u0101js.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  attr_accessor :awesome_variable\n\n  priv\u0101ts :awesome_main\u012bgais, :awesome_main\u012bgais=\nend<\/code><\/pre>\n\n\n\n<p>Probl\u0113mas ar <code>attr_ *<\/code> metodes nav vien\u012bgie \u0161\u0137\u0113r\u0161\u013ci. Ar t\u0101d\u0101m pa\u0161\u0101m gr\u016bt\u012bb\u0101m varam saskarties, ja v\u0113lamies izveidot priv\u0101tu aizst\u0101jv\u0101rdu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  priv\u0101tais alias :bar, :awesome_bar\nbeigas<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ruby 3.0 un m\u016bsu uz\u0146\u0113m\u0113jdarb\u012bba<\/h2>\n\n\n\n<p>Par laimi, Ruby 3.0 ievie\u0161 lielas izmai\u0146as, jo redzam\u012bbas metodes var pie\u0146emt mas\u012bvu k\u0101 argumentu, un meto\u017eu alias, attr_ *, var atjaunot mas\u012bvu ar defin\u0113to meto\u017eu nosaukumiem. J\u016bs varat las\u012bt vair\u0101k <a href=\"https:\/\/redmine.ruby-lang.org\/issues\/17314\">\u0161eit<\/a>.<\/p>\n\n\n\n<p>Tagad apl\u016bkosim da\u017eus piem\u0113rus jaun\u0101kaj\u0101 euba versij\u0101 un p\u0101rbaud\u012bsim, vai izmai\u0146as patie\u0161\u0101m ir veiktas un k\u0101 m\u0113s t\u0101s varam izmantot.<br>\u200b<br>Pirmaj\u0101 piem\u0113r\u0101 izmantosim private pirms attr accessor:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  priv\u0101tais attr_accessor :awesome_variable\nbeigas<\/code><\/pre>\n\n\n\n<p>\u0160\u0101ds izsaukums nerad\u012bs sintakses anal\u012bzes k\u013c\u016bdas, un, kas ir svar\u012bgi. <code>awesome_main\u012bgais<\/code> un<code>lielisks_main\u012bgais =<\/code>metodes k\u013c\u016bst priv\u0101tas.<br>\u200b<br>T\u0101da pati b\u016bs ar\u012b alias metode, jo tagad t\u0101 ar\u012b atgrie\u017e simbolu k\u0101 jaun\u0101s metodes nosaukumu un padara to redzamu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Foo\n  priv\u0101tais alias :bar, :awesome_bar\nbeigas<\/code><\/pre>\n\n\n\n<p>Interesanti ir tas, ka m\u0113s varam izmantot ar\u012b citas metodes, piem\u0113ram, lielisko<em>print moduli var izsaukt starp private un attr<\/em>las\u012bt\u0101js; ir svar\u012bgi, lai \u0161\u0101da metode atgrieztu mas\u012bvu ar meto\u017eu nosaukumiem, kas ir izteiksmes labaj\u0101 pus\u0113.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klase Modulis\n  def awesome_print(names)\n    puts names\n    names\n  end\nend\nklase Foo\n  private awesome_print attr_reader :awesome_bar\nend<span style=\"background-color: initial; font-family: inherit; font-size: inherit;\"> <\/span><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Kopsavilkums<\/h2>\n\n\n\n<p>Ceru, ka \u0161is raksts jums b\u016bs noder\u012bgs! Ja ir vair\u0101k zi\u0146u par Ruby 3.0. las\u012bt vair\u0101k <a href=\"https:\/\/rubyreferences.github.io\/rubychanges\/3.0.html\">\u0161eit<\/a>.<\/p>\n\n\n\n<p>Laim\u012bgu kod\u0113\u0161anu!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/thecodest.co\/careers#offers]\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/ruby-1-.png\" alt=\"Ruby izstr\u0101d\u0101t\u0101ja pied\u0101v\u0101jums\"\/><\/a><\/figure>\n\n\n\n<p><strong>Las\u012bt vair\u0101k:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/shut-up-and-take-your-money-1-hidden-costs-and-real-agility-in-product-development-process\/\">#1: Sl\u0113pt\u0101s izmaksas un re\u0101la elast\u012bba produktu izstr\u0101des proces\u0101<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/cto-challenges-scale-up-and-growth-of-software-products\/\">CTO izaicin\u0101jumi - programmat\u016bras produktu papla\u0161in\u0101\u0161ana un izaugsme<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Viena no iecien\u012bt\u0101kaj\u0101m Ruby iez\u012bm\u0113m ir t\u0101 \u013coti elast\u012bg\u0101 sintakse. Person\u012bgi es m\u012blu Ruby par to, cik daudz iesp\u0113ju mums ir defin\u0113t klases un to \u012bpa\u0161\u012bbas, un tie\u0161i par to es run\u0101\u0161u \u0161aj\u0101 rakst\u0101.<\/p>","protected":false},"author":2,"featured_media":3561,"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-3560","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 3.0. Ruby and lesser known privacy control methods - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/lv\/emuars\/rubins-3-0-rubins-un-mazak-zinamas-privatuma-kontroles-metodes\/\" \/>\n<meta property=\"og:locale\" content=\"lv_LV\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ruby 3.0. Ruby and lesser known privacy control methods\" \/>\n<meta property=\"og:description\" content=\"One of the most beloved features of Ruby is its very flexible syntax. Personally, I love Ruby for how many possibilities we have in defining classes and their properties, and this is what I will discuss in this article.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/lv\/emuars\/rubins-3-0-rubins-un-mazak-zinamas-privatuma-kontroles-metodes\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-03T07:23:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-27T09:52:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_3.0.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\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=\"3 min\u016btes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Ruby 3.0. Ruby and lesser known privacy control methods\",\"datePublished\":\"2019-09-03T07:23:00+00:00\",\"dateModified\":\"2026-04-27T09:52:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/\"},\"wordCount\":588,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ruby_3.0.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"lv-LV\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/\",\"name\":\"Ruby 3.0. Ruby and lesser known privacy control methods - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ruby_3.0.png\",\"datePublished\":\"2019-09-03T07:23:00+00:00\",\"dateModified\":\"2026-04-27T09:52:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/#breadcrumb\"},\"inLanguage\":\"lv-LV\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"lv-LV\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ruby_3.0.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/ruby_3.0.png\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ruby 3.0. Ruby and lesser known privacy control methods\"}]},{\"@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\":\"lv-LV\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"lv-LV\",\"@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\":\"lv-LV\",\"@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\\\/lv\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Rub\u012bns 3.0. Ruby un maz\u0101k zin\u0101mas priv\u0101tuma kontroles metodes - The Codest","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/lv\/emuars\/rubins-3-0-rubins-un-mazak-zinamas-privatuma-kontroles-metodes\/","og_locale":"lv_LV","og_type":"article","og_title":"Ruby 3.0. Ruby and lesser known privacy control methods","og_description":"One of the most beloved features of Ruby is its very flexible syntax. Personally, I love Ruby for how many possibilities we have in defining classes and their properties, and this is what I will discuss in this article.","og_url":"https:\/\/thecodest.co\/lv\/emuars\/rubins-3-0-rubins-un-mazak-zinamas-privatuma-kontroles-metodes\/","og_site_name":"The Codest","article_published_time":"2019-09-03T07:23:00+00:00","article_modified_time":"2026-04-27T09:52:00+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_3.0.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"3 min\u016btes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Ruby 3.0. Ruby and lesser known privacy control methods","datePublished":"2019-09-03T07:23:00+00:00","dateModified":"2026-04-27T09:52:00+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/"},"wordCount":588,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_3.0.png","articleSection":["Software Development"],"inLanguage":"lv-LV","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/","url":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/","name":"Rub\u012bns 3.0. Ruby un maz\u0101k zin\u0101mas priv\u0101tuma kontroles metodes - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_3.0.png","datePublished":"2019-09-03T07:23:00+00:00","dateModified":"2026-04-27T09:52:00+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/#breadcrumb"},"inLanguage":"lv-LV","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/"]}]},{"@type":"ImageObject","inLanguage":"lv-LV","@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_3.0.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/ruby_3.0.png","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Ruby 3.0. Ruby and lesser known privacy control methods"}]},{"@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":"lv-LV"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"lv-LV","@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":"lv-LV","@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\/lv\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/posts\/3560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/comments?post=3560"}],"version-history":[{"count":14,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/posts\/3560\/revisions"}],"predecessor-version":[{"id":7980,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/posts\/3560\/revisions\/7980"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/media\/3561"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/media?parent=3560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/categories?post=3560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/tags?post=3560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}