平松です。

TkMenu にバグがありました。

1. TkMenu.invoke は

  def invoke
    tk_send 'invoke'
  end

から

  def invoke(index)
    tk_send 'invoke', index
  end

に。メニューのinvokeは引数があるんですね。

2. TkMenu.insert は

  def insert(index, type, *keys)
    tk_send 'add', index, type, *hash_kv(keys)
  end

から

  def insert(index, type, keys=nil)
    tk_send 'insert', index, type, *hash_kv(keys)
  end

にするとうまく動くようです。
うーん、それにしても Tk のメニューも結構奥が深い。色々大変です。

-- 
// 平松祥史(Hiramatu,Yoshifumi) 
// hiramatu / cdrom.co.jp