黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

ActiveRecordでのUnix DomainSocket接続とdatabase.yml

乱雑なメモ。

PostgresqlUnix Domain Socket経由で接続する場合

ググっても英語の情報が満載で、つたない英語力で読解すると「host: 'localhost'って書けばいけるで!」となったので試してもダメ。
(たぶん僕の英語力が低すぎて読解ミスってる)

泣きそうになりながら色々試してみたところ、以下なら接続できるっぽい。

config = {
    ...
    host: "/path/to/socket_dir",
    ...
}

socket:で指定するとかも書いてあったんですが、試してみたところダメ。
上記で接続できたのでよしとするけど、ActiveRecordのドキュメント読もうな。


接続情報を外に出す

YAMLを使えばいいらしい。

database.ymlとして準備して

db:
    development:
        adapter:    postgresql
        host:       /path/to/socket_dir
        database:   testdb
        hoge:       huga

接続処理を以下のように書けばいい。

require 'yaml'

config = TAML.load_file('./database.yml')
ActiveRecord::Base.establish_connection(config['db']['development'])


Unix Domain Socket接続に時間がかかりすぎた。。。明日はmigrationと複数テーブルの結合やるぞい。。。