HerokuやDokkuで使う環境変数を管理するGem「laserlemon/figaro」の紹介です。
モダンなWebアプリケーションの設計の指針ともいえる「Twelve-Factor App」を実現するのを手けっしてくれるすばらしいGemです。
🐡 Twelve-Factor App
「Twelve-Factor App」にあるとおり、次の設計指針のことです。
今回のFigaroは(3)の設定を環境変数に格納するためのものです。
(1) コードベース : バージョン管理されている1つのコードベースがあり、それにより複数の環境にデプロイできる (2) 依存関係 : 依存関係を明示的に宣言し分離する (3) 設定 : 設定を環境変数に格納する (4) バックエンドサービス : バックエンドのサービスをアタッチされたリソースとして扱う (5) ビルド、リリース、実行 : ビルド、リリース、実行の3つのステージをちゃんと分離する (6) プロセス : アプリケーションを1つもしくは複数のステートレスなプロセスとして実行する (7) ポートバインディング : ポートバインディングを通してサービスを公開する (8) 並行性 : プロセスモデルによってスケールアウトする (9) 廃棄容易性 : 高速な起動とグレースフルシャットダウンで堅牢性を最大化する (10) 開発/本番一致 : 開発、ステージング、本番環境をできるだけ一致させた状態を保つ (11) ログ : ログをイベントストリームとして扱う (12) 管理プロセス : 管理タスクを1回限りのプロセスとして実行する
🐮 Gemのインストール
Gemfile
に以下を追加して、bundle install
を実行してください。
下記は用途に合わせてどちらかをお使いください。
# 公式のものを使う場合(Dokku非対応の公式のものを使う場合はこちら) |
🤔 設定方法
次の様に設定してください。
# config/application.yml |
Railsアプリケーション側からは次のように扱います。
# config/initializers/pusher.rb |
🐝 Herokuへの設定
「Heroku Toolbelt」をインストールして、Herokuのアプリケーションを作成し、
Railsアプリケーション側をデプロイする段階になったら、次のコマンドで環境変数に設定を登録します。
# 手動で個別登録 |
🗻 Dokkuへの設定
Dokkuの設定もほぼ同じです。dokku-cli
をインストールして、Gitリポジトリを設定したら、Herokuとほぼ同じことを実行できます。
# dokku の git を登録 |
🏈 おまけ
正直 Dokku
で使おうと思ったら、すでに拡張してくれている人がいたのでうほーいと思ったら、
Travis CIのRSpecがコケて散々悩みながら、デバッグしてたら夜中の2時でしたww
Support dokku cli by morizyun · Pull Request #227 · laserlemon/figaro
Pull Request
うまくいくといいなぁ