kaeruspoon

FreshConnectionからslaveというキーワードを廃止しました

76de73a1dae79a86bb99a813bd8e8e0a?s=30&d=http%3a%2f%2fkaeruspoon%.net2f2014%2fimages%2fno imageTsukasa OISHI

FreshConnectionのversion2.3.0から、slaveというキーワードを使うことをやめました。
詳細はこちらのPRを見てもらうとして、代わりに replica というキーワードを使うようになりました。
version2.3.xの間は以下のような条件で slave の設定を使うようにしています。

  • replica group名が replica (デフォルトもこれ)
  • database.ymlに replica の項目がなく、slave が存在する

つまり、何も変えずにバージョンアップしてもそのまま動くようになっています。ただ、Deprecation Warningを出すようにしています。
この挙動は version2.4.0で削除する予定です。

また最新のversion2.3.1では、環境変数を使ってDBへの接続設定をすることができるようになりました。
この機能がRailsにあったことを全然知らなかったのですが、以下のように DATABASE_URL という名前の環境変数を用意しておくと、それをDBへの接続設定に使います。

DATABASE_URL=adapter://dbuser:dbpass@dbhost:dbport/dbname?querypath

database.yml も存在している場合はマージされるようです。

同様に、FreshConnectionの接続設定も環境変数でできるようになりました。
FreshConnectionでは以下のような変数名を使います。

DATABASE_(replica group名)_URL

デフォルトなら、DATABASE_REPLICA_URL を使います。

Railsのsecret.ymlとかもそうですが、コード上に残したくないパスワードや秘密鍵等は環境変数経由で渡すのが主流になってきているみたいですね。
リポジトリの履歴に乗っちゃうのも問題だし、こうするほうがいいのは分かるのですが、実のところ環境変数で設定するのって、なんとなくいまいちな感じを覚えます。異なるアプリケーションで変数名が被らないようにしなきゃいけないですし(いまのところ、これはあんまり気にされてないみたい)。もっとスマートな方法があるといいのですが。