なぜか最近はpythonをいじってます。Rubyは・・・ちょっとお休み。 個人的なメモ。Pythonで関数呼び出しもとの情報を取得(web.pyのソースから)。

import sys
sys._getframe(1).f_locals

ほうほう。

def test_func() :
  print sys._getframe(1).f_locals

a = "variable a"
b = "variable b"
c = 1
test_func()

#>> {'test_func': <function test_func at 0x40657684>, 'a': 'variable a', 'c': 1, 'b': 'variable b', .....}

こんな感じで。


個人的にActiveSupportが大好きなわけですが。

1.1で追加されたwith_optionsがRouting以外でどーもカッコいい使いどころがなーとおもっていたんですが

with_options(:if => :validate_password?) do |me|
me.validates_format_of :password #...
me.validates_length_of :password # ...
me.validates_confirmation_of :password #...
me.validates_presence_of :password#...
end

こんなキモイ使い方があった。もちろん、ActiveRecordのバリデーション。よくあるパターンで、パスワードはハッシュで保存しあって、createしたときやパスワード変更したときはバリデーションするんだけどそれ以外はしない、みたいなとき。

まぁ、やっぱり一番カッコいいのはto_procなんですけど。


これはかなり嬉しい機能だなあ。 最近Prototype.jsの$$で属性セレクタが使用できるようになりました。

どんな風にかけるのか、コードをテストから引っ張ってきてみました。

$$('a[href="http://inforno.net/#"]')
$$('a[class~=internal]')
$$('*[xml:lang|="es"]')
$$('*[xml:lang|="ES"]')
$$('a[href!=#]')
$$('div[style] p[id] strong')
$$('a[class~=external][href="http://inforno.net/#"]')

こんな感じです。 値はクオートしてもしなくても大丈夫っぽいですね。

すばらすい。inputに対する操作なんかで特に便利。今までちょっとボタン操作するためだけに、そのボタンにIDふったりクラスふったりしてたんですけど$$(’#hoge input[type=submit]’)でいけるんだなあ。そんなにパフォーマンスに気をつかわなくて良いページでは使ってみよう。