RubyのMonkey Patchの開発例
2022-01-04 02:35:10
モンキーパッチとは、クラスやモジュールを実行時に動的に変更(拡張)することができる特殊なプログラミング技術です。私たちのニーズに合わないサードパーティのライブラリを修正するためにモンキーパッチを追加したり、コードのバグをゼロタイムで修正するためにモンキーパッチを追加したりすることができます。
語源
モンキーパッチは最初ゲリラパッチと呼ばれ、パルチザンのように狡猾なパッチと表現された。その後、発音が似ていることからゴリラパッチと呼ばれ、ゴリラは可愛くないということでモンキーパッチと改名されました。
利用シーン
私の理解では、モンキーパッチの使用シナリオは2つあります。
緊急のセキュリティパッチ(Hotfixなど)。
ライブラリ内のプロパティやメソッドを変更または拡張します。
例
のエイリアスです。
class Monkey2 < Monkey
def method2
puts "This is method2"
end
alias output method2
end
monkey = Monkey2.new
monkey.method2
monkey.output
を含めることができます。
module Helper
def help
puts "Help... "
end
def method1
puts "helper method1... "
end
end
class Monkey
include Helper
def method1
puts "monkey method1... "
end
end
monkey = Monkey.new
monkey.help
monkey.method1#Because of the rename, the method of the current class takes precedence
をアンデフにします。
class Monkey
def method1
puts "This is method1"
end
end
class Monkey2 < Monkey
def method2
puts "This is method2"
end
end
monkey = Monkey2.new
monkey.method1
monkey.method2
method2 class Monkey2
undef method1
undef method2
end
monkey.method1
monkey.method2
また、undef <method_name> と同じ機能を実現するために、以下の例で undef_method や remove_method を使用することができます。
class Monkey2
remove_method :method1
undef_method :method2
nd
モンキーパッチを使用する場合、以下の点にも注意が必要です。
1. 基本的に追加機能のみ
2. 機能変更を行う際は慎重に行い、できるだけ小さな変更にとどめること
3. クロスコールに注意する
関連
-
Mac OS XにRuby実行環境をインストールするための詳細な手順
-
モンキーパッチのプログラミングスタイルとRubyでの利用について
-
Rubyを使ったラムダ計算の詳しいシミュレーション方法
-
Rubyのgemパッケージ管理およびgemソース構築のチュートリアル
-
文字列のマッチングと置換のためのRuby正規表現
-
RubyのTimeオブジェクトの共通機能まとめ
-
RubyのSimple FactoryパターンとFactory Methodパターンを利用する
-
RubyGnome2 ライブラリを用いた GTK 環境での Ruby GUI プログラミングの基本的な考え方
-
Rubyにおけるコメントの使い方と中国語のエンコーディングについて解説します。
-
Ruby on Railsのマイグレーションに関するいくつかの考慮点
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン