Sinatraには、ステージング環境と本番環境の両方に対応するAPIがあります。リクエストがステージングサーバーから送信された場合、APIはステージングデータベースと通信する必要があります。要求が本番サーバーからのものである場合は、本番データベースと通信する必要があります。
すべてのアプリはHerokuにデプロイされます。
env['HTTP_HOST']
リクエストがステージングからのものか本番からのものかを確認し、を設定するために使用できますdb_url
。
ただし、問題は、dbに接続するために実行されるActiveRecord初期化コードです。
db = URI.parse db_url
ActiveRecord::Base.establish_connection(
:adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
:host => db.host,
:port => db.port,
:username => db.user,
:password => db.password,
:database => db.path[1..-1],
:encoding => 'utf8'
)
各リクエストの前にこのコードを実行するのは理にかなっていますか?それはおそらく遅いでしょう...
もう1つの解決策は、APIの2つのインスタンスを実行することです。しかし、同じコードを2回デプロイする必要があります...
これを行うためのより良い方法はありますか?