ActiveLdap0.8.3.1→0.9.0

LDAP認証に対応したアプリケーションを実環境に移して動かしたら、パスワード間違ってても認証通るようになって焦った。ActiveLdapがバージョンアップしたせいらしい。以下0.8.3.1版と0.9.0版の認証確認用のメソッドの比較。

#0.8.3.1
def authenticated?(password)
  establish_connection(:password => password)
  true
rescue ActiveLdap::AuthenticationError, ActiveLdap::LdapError::UnwillingToPerform
  false
end
#0.9.0
def authenticated?(password)
  bind(password)
  true
rescue ActiveLdap::AuthenticationError, ActiveLdap::LdapError::UnwillingToPerform
  false
end

そういえば、そもそもの原因は RAILS_ROOT/lib にActiveLdap突っ込んだのにちゃんとロードしてくれなかったから。どっかに何か書かなきゃいけないんだっけか・・・。なんかすごい基本的なことを見過ごしてる気がする。

あと、クラスメソッド定義するとき↓みたいな書き方もできるんだと知った。クラスメソッドをまとめて定義するのに便利だと思う。好み分かれそうだけど。

class Foo
  class << self
    def bar
    end
  end

  def hoge
  end
end