window.pipedriveLeadboosterConfig={です。 ベース:'leadbooster-chat.pipedrive.com'、 companyId:11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2、 } ;(function () { var w = window もし (w.LeadBooster) {なら console.warn('LeadBooster already exists') } else { w.LeadBooster = { {. q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 関数 (n) { { this.q.push({ t: 'o', n: n, h: h }) this.q.push({ t: 't', n: n }) }, } } })() Ruby 3.0。Rubyとあまり知られていないプライバシー制御方法 - The Codest
The Codest
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 産業
    • フィンテック&バンキング
    • E-commerce
    • アドテック
    • ヘルステック
    • 製造業
    • 物流
    • 自動車
    • アイオーティー
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
戻る矢印 戻る
2021-01-28
ソフトウェア開発

Ruby 3.0.Rubyとあまり知られていないプライバシー管理方法

The Codest

トマシュ・シュカラデク

開発アーキテクト

Rubyの最も愛されている特徴のひとつに、非常に柔軟な構文がある。個人的には、クラスとそのプロパティを定義する際の可能性の多さがRubyの魅力であり、この記事で取り上げるのはその点だ。

基本的な解決策

パブリック・メソッドとプライベート・メソッドを1つずつ持つクラスFooを使っているとしよう:

クラス Foo
  def bar
    :awesome
  終了

  プライベート

  def baz
    :something_private
  終了
終了

このような解決策は、事実上あらゆるところで目にすることができる。 プロジェクト.ランニング Foo.new.baz というエラーが発生します。 NoMethodError (プライベートメソッド 'baz' が # 用に呼び出された) それが私たちの意図したことです。保存形式を変更し、クラス定義の接頭辞にprivateを追加しようとしたらどうなるでしょうか?

クラス Foo
  def bar
    :awesome
  終了

  private def baz
    :something_private
  終了
終了

を実行した後、おわかりのように コードそれは実際に機能する!なぜメソッドを実行する前にメソッドの可視性を入力できるのか?なぜなら、メソッドを定義するとき、defはメソッドの名前をシンボルとして返すからだ。この式は構文の一部であるだけでなく、事実上モジュール・クラスから派生したメソッドであり、このシンボルを引数として扱います。詳しくは、ドキュメント このリンク.privateで簡単に始まったので、privateメソッドの可視性を変更してみよう。

クラス Foo
  def bar
    :awesome
  終了

  private def baz
    :something_private
  終了

  public :baz
終了

コードを実行するとどうなるのか?

irb(main):012:0> Foo.new.baz
=> :something_private

成功!ベースのメソッドがパブリックになった。もちろん、同じ操作がモジュールにも適用される。
​
でも、それでどうなるんだ?
​
この機能により、メソッドを定義する際にそのメソッドの可視性を自由に変更したり、メソッドを継承する際にそのメソッドの可視性を変更したりすることができる。

では、Ruby 2.7でエイリアスとアクセサの可視性を変更することで何ができるかを見てみましょう。

クラス Foo
  private attr_accessor :awesome_variable
終了

残念ながら、privateメソッドはsymbolsとattr_accessorを期待しているため、エラーが発生する。このコードはnilを返すので、このメソッドはRuby 2.7のprivateメソッドと互換性がありません。では、どのような選択肢があるのだろうか?

  1. つまり、privateキーワードの下にattr_accessorを使用することで、それが機能するようにすることができる。 すごい変数すごい変数 メソッドを使用する。
クラス Foo
  プライベート

  attr_accessor :awesome_variable
終了
  1. 第二の選択肢は、以下のメソッドで生成されたメソッドに対してプライベートメソッドを実行することである。 属性この場合、セッターを入力することも忘れてはならない。
クラス Foo
  attr_accessor :awesome_variable

  プライベート :awesome_variable, :awesome_variable=
終了

の問題点 attr_ *. メソッドだけが障害ではない。プライベート・エイリアスを作りたいときにも、同じ困難に遭遇する。

クラス Foo
  プライベートエイリアス :bar, :awesome_bar
終了

Ruby 3.0と私たちのビジネス

幸いなことに、Ruby 3.0ではvisibilityメソッドが配列を引数に取ることができるようになり、メソッドのエイリアスであるattr_ *が定義されたメソッド名で配列をリセットできるようになりました。詳しくは これ.

では、最新のユーバでいくつかの例を見て、実際に変更が加えられたかどうか、そしてそれをどのように使えるかをチェックしてみよう。
​
最初の例では、attrアクセサの前にprivateを使ってみよう:

クラス Foo
  private attr_accessor :awesome_variable
終了

このような呼び出しは構文の解析でエラーを起こさない。 すごい変数 そしてすごい変数メソッドはプライベートになる。
​
エイリアス・メソッドは、新しいメソッドの名前としてシンボルを返し、それを可視化する。

クラス Foo
  プライベートエイリアス :bar, :awesome_bar
終了

興味深い事実は、さらなるメソッドを掘り下げることもできるということだ。printモジュールは、privateとattrの間で呼び出すことができる。このようなメソッドは、式の右側にあるメソッド名を配列にして返すことが重要である。

クラス Module
  def awesome_print(names)
    名前を入れる
    名前
  終了
終了
クラス Foo
  private awesome_print attr_reader :awesome_bar
終了 

概要

この記事がお役に立つことを願っています!Ruby 3.0に関するその他のニュースについては、続きをお読みください。 これ.

ハッピーなコーディングだ!

Ruby開発者オファー

続きを読む

黙って金を受け取れ #1:製品開発プロセスにおける隠れたコストと真の俊敏性

CTOの課題 - ソフトウェア製品のスケールアップと成長

関連記事

ソフトウェア開発

将来を見据えたウェブ・アプリケーションの構築:The Codestのエキスパート・チームによる洞察

The Codestが、最先端技術を駆使してスケーラブルでインタラクティブなウェブアプリケーションを作成し、あらゆるプラットフォームでシームレスなユーザー体験を提供することにどのように秀でているかをご覧ください。The Codestの専門知識がどのようにデジタルトランスフォーメーションとビジネス...

ザ・コデスト
ソフトウェア開発

ラトビアを拠点とするソフトウェア開発企業トップ10社

ラトビアのトップソフトウェア開発企業とその革新的なソリューションについて、最新記事でご紹介します。ラトビアの技術リーダーたちがあなたのビジネスをどのように向上させるかをご覧ください。

thecodest
エンタープライズ&スケールアップ・ソリューション

Javaソフトウェア開発の要点:アウトソーシングを成功させるためのガイド

outsourcingのJavaソフトウェア開発を成功させるために不可欠なこのガイドを読んで、The Codestで効率性を高め、専門知識にアクセスし、プロジェクトを成功に導きましょう。

thecodest
ソフトウェア開発

ポーランドにおけるアウトソーシングの究極ガイド

ポーランドのoutsourcingの急増は、経済、教育、技術の進歩がITの成長とビジネス・フレンドリーな環境を促進していることによる。

ザ・コデスト
エンタープライズ&スケールアップ・ソリューション

IT監査ツール&テクニック完全ガイド

IT監査は、安全かつ効率的で、コンプライアンスに準拠したシステムを保証します。その重要性については、記事全文をお読みください。

The Codest
ヤクブ・ヤクボヴィッチ CTO & 共同創設者

ナレッジベースを購読して、IT部門の専門知識を常に最新の状態に保ちましょう。

    会社概要

    The Codest - ポーランドに技術拠点を持つ国際的なソフトウェア開発会社。

    イギリス - 本社

    • オフィス 303B, 182-184 High Street North E6 2JA
      イギリス、ロンドン

    ポーランド - ローカル・テック・ハブ

    • ファブリチュナ・オフィスパーク、アレハ
      ポコジュ18、31-564クラクフ
    • ブレイン・エンバシー, コンストルクトースカ
      11, 02-673 Warsaw, Poland

      The Codest

    • ホーム
    • 会社概要
    • サービス
    • Case Studies
    • ノウハウ
    • 採用情報
    • 辞書

      サービス

    • アドバイザリー
    • ソフトウェア開発
    • バックエンド開発
    • フロントエンド開発
    • Staff Augmentation
    • バックエンド開発者
    • クラウドエンジニア
    • データエンジニア
    • その他
    • QAエンジニア

      リソース

    • 外部ソフトウェア開発パートナーとの協力に関する事実と神話
    • 米国から欧州へ:アメリカの新興企業がヨーロッパへの移転を決断する理由
    • テックオフショア開発ハブの比較:テックオフショア ヨーロッパ(ポーランド)、ASEAN(フィリピン)、ユーラシア(トルコ)
    • CTOとCIOの課題は?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • ウェブサイト利用規約

    著作権 © 2025 by The Codest。無断複写・転載を禁じます。

    jaJapanese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek jaJapanese