酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

MacでSSHポートフォワーディング管理 Coccinellida & ローカルでrails console実行してサーバDBに接続

最近借りているサーバーのDBに安全につなぐ方法はないものかと 物色している家庭でSSHポートフォワーディングの便利さをようやく理解しました(恥ずかしながら)。

この便利さを自作アプリとかでも応用できるようにMacの起動時に自動で接続して、それを維持し続けるようにしてくれる無料アプリ 『Coccinellida - Simple SSH Tunnel Manager for Mac OS X』 (正確にはそのためのterminalコマンドを設定できる)を見つけたので紹介です。


ターミナルコマンド

まずはターミナルからSSHのポートフォワーディングをするためのコマンドがこちら。

1
ssh ログイン名@経由サーバ -L 自分のポート:目的サーバ:目的サーバのポート

Coccinellida を使った設定方法

基本的には次のことをすればいいです。

これでlocalhostのポートをサーバー内のDBのポートと同じように扱う事ができるようになります。 (SSHを使っているので安全に接続、データをやり取りできるはず)

RailsコンソールからサーバーDBに接続する場合

これを応用すると、ローカルでRailsコンソールするとリモートのDBに接続するといったことも可能になります。

今回はリモートの環境(remote)を作ります。config/environments/remote.rbをdevelopmentあたりをコピーして作成。 次にconfig/database.ymlに以下を追加します。

1
2
3
4
5
6
7
8
9
remote:
  adapter: postgresql
  encoding: unicode
  database: <DB名>
  pool: 5
  username: <ユーザー名>
  password: <パスワード>
  port: <ポートフォワーディングしているport番号>
  host: localhost

たったのこれだけ、あとは普通にローカルで以下のコマンドを実行するとリモートのDBにつないで好き勝手できます。 (hostがなかった場合、localのsocketを探しに行ってしまうので、必ずhostは設定してください)

1
RAILS_ENV=remote bundle exec rails console

Special Thanks

おすすめの書籍