ActiveDecoratorと組み合わせてJbuilderのpartial!を使ったら、次のようにnil?というキーで空のハッシュができていた。 { "nil?": {}, // .jbuilderに書いた通りのキー } これは、partial!したときに裏で呼ばれるrenderメソッドの:localsオプションにjsonオブジェクト(JbuilterTemplateのインスタンスで、BasicObjectを継承したもの)が渡されており、これに対してActiveDecorator::Decorator#decorateによってメソッドを生やそうとした際にnil?が呼ばれていたのが原因だった。 回避策としては、JbuilderTemplateオブジェクトに対してdecorateする必要はほとんどないので、その場合はメソッドを生やそうとせずにすぐにdecorateを抜けてしまえばいい。 mo
今回は decorator 3.4.0 : Python Package Index のお話。 Pythonのデコレータは便利です。関数の実体定義直後に、任意のフィルタをその関数に施すことができます。 def special(func): def invoker(*args, **kw): return "special " + func(*args, **kw) invoker.__name__ = func.__name__ invoker.__dict__.update(func.__dict__) invoker.__doc__ = func.__doc__ invoker.__module__ = func.__module__ return invoker #改変した関数を返す @special def myproc(): return "hoge" #ここで myproc =
こちらのスライド。RubyでRubyを拡張する。つまりメタプログラミングの話。 Extending Ruby with Ruby // Speaker Deck メタプログラミングを使って他の言語の機能を実装しようという内容になってる。 Python: Function decorators Scala: Partial application Haskell: Lazy evaluation 今回は、この中でPythonのdecoratorを実装するというのをピックアップ。 githubにソースコードがあがってて、スライド中では未解決になってた問題がすでに解決されている。 michaelfairley/method_decorators ここから載せるコードは、githubの方じゃなくてスライド中のコードに一部手を入れたものになってる。ひとつのメソッドに複数のdecoratorを指定でき
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く