Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

2013-08-25から1日間の記事一覧

メタプログラミングRuby | 魔術 | サンドボックス

概要 サンドボックス 内容 信頼出来ないコードを安全な環境で実行する。 特定の処理をセーフレベルを指定したproc内で実行することで 任意のセキュリティレベルで実行し、安全を確保することが出来ます。 サンプル # encoding: utf-8 require "pry" def leve…

メタプログラミングRuby | 魔術 | パターンディスパッチ

概要 パターンディスパッチ 内容 名前を元にして呼び出すメソッドを選択する。 サンプル # encoding: utf-8 require "pry" class Hoge %w|hoge hage hige|.each do |w| define_method w do puts w end end end hoge = Hoge.new %w|poge hoge page hage pige …

メタプログラミングRuby | 魔術 | オブジェクト拡張

概要 オブジェクト拡張 内容 オブジェクトの特異クラスにモジュールをインクルードして特異メソッドを定義。 サンプル # encoding: utf-8 require "pry" class Hoge def hoge puts "hoge" end end hoge = Hoge.new module Hageable def hage puts "hage" end…

メタプログラミングRuby | 魔術 | モンキーパッチ

概要 モンキーパッチ 内容 既存のクラスの振る舞いを変更する。 Rubyの場合、オープンクラスで既存のクラスを変更します。 サンプル # encoding: utf-8 require "pry" class Fixnum def + (value) self - value end end # Fixnumクラスにモンキーパッチをあ…

メタプログラミングRuby | 魔術 | 遅延インスタンス

概要 遅延インスタンス 内容 初回アクセスまでインスタンス変数を初期化しない。 サンプル # encoding: utf-8 require "pry" # 通常の初期化 class Hoges def initialize @hoges = {} end def hoges() @hoges end end hoges = Hoges.new.hoges puts hoges.cl…

メタプログラミングRuby | 魔術 | カーネルメソッド

概要 カーネルメソッド 内容 Kernelモジュールにメソッドを追加することで、言語の組み込み機能のように 見えるメソッドを追加することが出来ます。 サンプル # encoding: utf-8 require "pry" module Kernel def br_puts(value) puts "#{value}<br />" end end %w…