{"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":"ruby-3-0-ruby-ja-vahemtuntud-privaatsuskontrolli-meetodid","status":"publish","type":"post","link":"https:\/\/thecodest.co\/et\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/","title":{"rendered":"Ruby 3.0. Ruby ja v\u00e4hemtuntud privaatsuskontrolli meetodid"},"content":{"rendered":"<h2 class=\"wp-block-heading\">P\u00f5hilahendused<\/h2>\n\n\n\n<p>Oletame, et kasutame klassi Foo, millel on \u00fcks avalik meetod ja \u00fcks privaatne meetod:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  def bar\n    :awesome\n  end\n\n  private\n\n  def baz\n    :something_private\n  end\nend<\/code><\/pre>\n\n\n\n<p>K\u00f5ik on suurep\u00e4rane, me n\u00e4eme sellist lahendust praktiliselt igas <a href=\"https:\/\/thecodest.co\/et\/dictionary\/why-do-projects-fail\/\">projekt<\/a>. K\u00e4ivitus <code>Foo.new.baz<\/code> p\u00f5hjustab vea <em>NoMethodError (privaatne meetod 'baz', mis on kutsutud # jaoks )<\/em> ja seda me kavatsesime teha. Mis juhtub, kui me \u00fcritame salvestusformaati muuta ja lisada klassi definitsioonis eesliite private?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  def bar\n    :awesome\n  end\n\n  private def baz\n    :something_private\n  end\nend<\/code><\/pre>\n\n\n\n<p>Nagu n\u00e4ete p\u00e4rast programmi <a href=\"https:\/\/thecodest.co\/et\/dictionary\/what-is-code-refactoring\/\">kood<\/a>, see tegelikult t\u00f6\u00f6tab! Miks me saame sisestada meetodi n\u00e4htavuse enne selle tegemist? Sest meetodi defineerimisel tagastab def meetodi nime s\u00fcmbolina. See v\u00e4ljend ei ole ainult osa s\u00fcntaksist, vaid de facto meetod, mis on tuletatud Module klassist ja k\u00e4sitleb seda s\u00fcmbolit argumendina. Lisateavet leiate dokumentatsioonist <a href=\"https:\/\/ruby-doc.org\/core-3.0.0\/Module.html#method-i-private\">sellel lingil<\/a>. Kuna see algas nii lihtsalt private'iga, siis proovime muuta privaatse meetodi n\u00e4htavust.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  def bar\n    :awesome\n  end\n\n  private def baz\n    :something_private\n  end\n\n  public :baz\nend<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mis juhtub p\u00e4rast koodi k\u00e4ivitamist?<\/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; :midagi_privaatne<\/code><\/pre>\n\n\n\n<p>Edu! Meie meetodi alused said avalikuks, sest me tegime selle kaks korda n\u00e4htavaks. Loomulikult kehtib sama toiming ka moodulite kohta.<br>\u200b<br>Suurep\u00e4rane, aga kust see saab <a href=\"https:\/\/thecodest.co\/et\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a>?<br>\u200b<br>See funktsionaalsus annab meile palju, sest me saame meetodi m\u00e4\u00e4ratlemisel vabalt muuta meetodi n\u00e4htavust v\u00f5i isegi meetodite n\u00e4htavust nende p\u00e4rimisel.<\/p>\n\n\n\n<p>N\u00fc\u00fcd vaatame, mida <a href=\"https:\/\/thecodest.co\/et\/blog\/hire-ror-developer\/\">Ruby<\/a> 2.7 saab teha aliase ja accessorite n\u00e4htavuse muutmise osas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  private attr_accessor :awesome_variable\nend<\/code><\/pre>\n\n\n\n<p>Kahjuks saame vea, kuna privaatne meetod ootab s\u00fcmboleid ja attr_accessor. Kood tagastab nil ja seega ei \u00fchildu see meetod Ruby 2.7 privaatse kasutusega. Millised on siis meie v\u00f5imalused?<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Me saame kasutada attr_accessor v\u00f5tmes\u00f5na private all, et see toimiks, st me saame vea, kui me tahame viidata <code>awesome_variableawesome_variable<\/code> meetod.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  private\n\n  attr_accessor :awesome_variable\nend<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Teine v\u00f5imalus on k\u00e4ivitada privaatne meetod meetodite poolt genereeritud meetodite <code>attr_attribuut<\/code>; sel juhul peame me ka meeles pidama, et sisestame sinna seadistaja.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  attr_accessor :awesome_variable\n\n  private :awesome_variable, :awesome_variable=\nend<\/code><\/pre>\n\n\n\n<p>Probleemid <code>attr_ *<\/code> meetodid ei ole ainsad takistused. Sama raskusega v\u00f5ime kokku puutuda ka siis, kui tahame luua privaatse varjunime.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  private alias :bar, :awesome_bar\nend<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ruby 3.0 ja meie \u00e4ri<\/h2>\n\n\n\n<p>\u00d5nneks toob Ruby 3.0 suure muudatuse, kuna n\u00e4htavuse meetodid v\u00f5ivad v\u00f5tta argumendina massiivi ja meetodite alias, attr_ *, saab massiivi nullida defineeritud meetodite nimedega. Saate lugeda rohkem <a href=\"https:\/\/redmine.ruby-lang.org\/issues\/17314\">siin<\/a>.<\/p>\n\n\n\n<p>N\u00fc\u00fcd vaatame m\u00f5ned n\u00e4ited viimases eubas ja kontrollime, kas muudatused on tegelikult tehtud ja kuidas me saame neid kasutada.<br>\u200b<br>Esimeses n\u00e4ites kasutame enne attr accessori private:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  private attr_accessor :awesome_variable\nend<\/code><\/pre>\n\n\n\n<p>Selline \u00fcleskutse ei p\u00f5hjusta vigu s\u00fcntaksi lahtim\u00f5testamisel ja mis on oluline, et <code>awesome_variable<\/code> ja<code>awesome_variable =<\/code>meetodid muutuvad privaatseks.<br>\u200b<br>Alias meetod teeb sama, sest n\u00fc\u00fcd tagastab ta ka s\u00fcmboli uue meetodi nimena ja teeb selle n\u00e4htavaks.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Foo\n  private alias :bar, :awesome_bar\nend<\/code><\/pre>\n\n\n\n<p>Huvitav on see, et me v\u00f5ime s\u00fcveneda ka edasistesse meetoditesse, nt vinge<em>print-moodulit saab kutsuda private ja attr vahel.<\/em>lugeja; oluline on, et selline meetod tagastab massiivi nende meetodite nimedega, mis on v\u00e4ljendi paremal poolel.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">klass Moodul\n  def awesome_print(nimed)\n    puts names\n    names\n  end\nend\nklass 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\">Kokkuv\u00f5te<\/h2>\n\n\n\n<p>Loodan, et see artikkel on teile kasulik! Ruby 3.0 kohta rohkem uudiseid. loe l\u00e4hemalt <a href=\"https:\/\/rubyreferences.github.io\/rubychanges\/3.0.html\">siin<\/a>.<\/p>\n\n\n\n<p>Head kodeerimist!<\/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 arendaja pakkumine\"\/><\/a><\/figure>\n\n\n\n<p><strong>Loe edasi:<\/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\/\">Ole vait ja v\u00f5ta oma raha #1: Varjatud kulud ja tegelik paindlikkus tootearendusprotsessis<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/cto-challenges-scale-up-and-growth-of-software-products\/\">CTO v\u00e4ljakutsed - tarkvaratoodete laiendamine ja arendamine<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Ruby \u00fcks armastatumaid omadusi on selle v\u00e4ga paindlik s\u00fcntaks. Mulle isiklikult meeldib Ruby selle eest, kui palju v\u00f5imalusi meil on klasside ja nende omaduste defineerimisel, ja seda ma ka k\u00e4esolevas artiklis arutan.<\/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\/et\/blogi\/ruby-3-0-ruby-ja-vahemtuntud-privaatsuskontrolli-meetodid\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/blogi\/ruby-3-0-ruby-ja-vahemtuntud-privaatsuskontrolli-meetodid\/\" \/>\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 minutit\" \/>\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\":\"et\",\"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\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@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\":\"et\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@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\":\"et\",\"@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\\\/et\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ruby 3.0. Ruby ja v\u00e4hemtuntud eraelu puutumatuse kontrolli meetodid - 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\/et\/blogi\/ruby-3-0-ruby-ja-vahemtuntud-privaatsuskontrolli-meetodid\/","og_locale":"et_EE","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\/et\/blogi\/ruby-3-0-ruby-ja-vahemtuntud-privaatsuskontrolli-meetodid\/","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 minutit"},"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":"et","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 ja v\u00e4hemtuntud eraelu puutumatuse kontrolli meetodid - 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":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/ruby-3-0-ruby-and-lesser-known-privacy-control-methods\/"]}]},{"@type":"ImageObject","inLanguage":"et","@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":"et"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"et","@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":"et","@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\/et\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/comments?post=3560"}],"version-history":[{"count":14,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3560\/revisions"}],"predecessor-version":[{"id":7980,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3560\/revisions\/7980"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media\/3561"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media?parent=3560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/categories?post=3560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/tags?post=3560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}