PagodaBoxのDB接続で嵌ったのでメモ

PagodaBoxのDBは、クラウド(PaaS)の上の仮想DBとローカルPCをSSHトンネリングして直接繋ぐことができる。
(PaaSで直接DB接続とかすげぇーー)

・・・・・・接続で嵌った・・・
原因は簡単なことだったけど、先入観あると嵌るかもしれません。
ということでエラーの経緯含めて書いてみる。

1.アカウントはGithub連携で作った

多分PagodaBoxを使おうとする人は十中八九GitHubのアカウント持ってるでしょ。
ということはアカウント作成もGitHub経由で作り、ログインもGitHub経由ですると思うの。
というか僕がそれ

2.インストールと接続方法

$ gem install pagoda
$ pagoda -a <app-name> tunnel db1

ドキュメントにはこれでいいよと書いてあったがそうじゃなかった。

~/Gemfile

source :rubygems
gem 'sinatra'
gem 'passenger'
gem "pagoda", "~> 0.6.2" <-これを追加

installしたgemが認識されてなかっただけの話

~/.pagodarc

---
:u: <username> or <email>
:username: <username or email>
:p: <password>
:password: <password>
:a: <app-name> 
:app: <app-name> 
commands:
  :_doc: {}
  :clone: {}
  :create: {}
  :deploy: {}
  :destroy: {}
  :info: {}
  :init: {}
  :list: {}
  :log: {}
  :rollback: {}
  :key:gen: {}
  :key:push: {}
  :tunnel: {}

gem install pagodaしたときにユーザホーム以下に作られていたのに気づかなかった。
pagodaを実行するとここに書いてあるものが使われるらしい。
u username p password a appはアカウント情報のエイリアスになっていて、ここに書いておくとpagodaを実行する際にデフォルトのアカウント情報を拾ってくれます。(心当たりがないけど最初見たらTwitterのuser/passだったっていうのは何故なのか不明)
GitHub経由でアカウント作ったのでGitHubと同じアカウント設定すればと思ったんですが、そうじゃありませんでした。

3.OAuth連携で登録した時のパスワード

よくよく考えれば、githubのパスワードをpagodaに送信するって考えられません。
ということでダッシュボードを徘徊してたらありました。
https://dashboard.pagodabox.com/account/edit
(認証済の人しか見られませんが)
GitHubTwitterからOAuth経由でアカウント登録した場合、パスワードは自動で設定されるらしく、pagodaツールを実行するには明示的に希望するパスワードに変えてあげないといけなかったようです。

4.接続完了

というわけでパスワードを変更した結果、以下のように無事接続できました。

$ pagoda tunnel db1

Tunnel Established!  Accepting connections on :
-----------------------------------------------

HOST : 127.0.0.1 (or localhost)
PORT : 3308
USER : (found in pagodabox dashboard)
PASS : (found in pagodabox dashboard)

-----------------------------------------------
(note : ctrl-c To close this tunnel)
^CTunnel Closed.
-----------------------------------------------

あとはlocalhost:3308に接続すれば無事DB接続完了です。
UserとPassはダッシュボードから作成したDBをクリックした画面下にある「Show Credentials」に書いてありまする
ちなみにSequel Proを使用してます。