rubyでメモ化

クラス内のメソッドをメモ化するのに試行錯誤。
initialize時にメモ化しておけばいいらしいです。

gem install memoize

classA.rb

#!/usr/bin/ruby
require 'memoize'
include Memoize

class ClassA
  def initialize
    memoize :methodA
  end
  def methodA(num)
    sleep(10)
    return num+1
  end
end

で、

test.rb

#!/usr/bin/ruby
require 'classA'
obj=ClassA.new
puts Time.now
puts obj.methodA(10)
puts Time.now
puts obj.methodA(10)
puts Time.now

文字化けしたので変更

mysql> alter database testdb default character set utf8;
ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:host => 'localhost',
:username => 'username',
:password => 'password',
:database => 'testdb',
:socket => '/var/run/mysqld/mysqld.sock',
:encoding => 'utf8'
)

ActiveRecordmysql接続しようとしたらエラー。

ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:host => 'localhost',
:username => 'username',
:password => 'password',
:database => 'testdb',
:socket => '/var/run/mysqld/mysqld.sock'
)

:socketを指定する必要があるようだ