13

ご存知のように、config/database.yml ファイルでデータベースの正しいデータベース名、ユーザー名、およびパスワードを提供する必要があります。そうしないと、Rails アプリが動作しなくなります。

デフォルトのセットアップでは、パスワードは config/database.yml ファイル内のプレーン テキストです。アプリが無料の GitHub リポジトリにある場合、パスワードは公開情報です。これは、本格的なアプリでは実行可能なオプションではありません。(このパスワードを他の目的で使用しない限り、チュートリアルの演習には問題ありません。)

これまでのところうまくいった解決策がありますが、もっと良いものがあるかどうか疑問に思っています。私のデプロイした例はhttps://github.com/jhsu802701/bsfで見ることができます。

私がしていることは、開発環境のユーザー名とパスワードをプログラムで提供するように config/database.yml ファイルをセットアップすることです。開発環境では、config/database.yml スクリプトにコマンドを追加して、開発環境のユーザー名 (私が使用する Debian Linux セットアップの通常のユーザー名) と空白のパスワードを取得します。(自分のユーザー名に Postgres スーパーユーザー権限を与えます。) 実稼働環境では、展開スクリプトにコマンドを追加します。このコマンドは、アカウントの別の場所にあるファイルからユーザー名とパスワードを取得し、この情報を config/database.yml ファイルに書き込みます。

より良い解決策はありますか?

これをカバーする Ruby gem はありますか? 無ければ作成を考えています。

4

4 に答える 4

22

Heroku のやり方と、他のレール ショップの大多数が ENV 変数を使用している方法

2 つの変数を環境にエクスポートします。

export POSTGRES_USERNAME='username'
export POSTGRES_PASSWORD='password'

次に、 database.yml ファイルで実行できます

username: <%= ENV['POSTGRES_USERNAME'] %>
password: <%= ENV['POSTGRES_PASSWORD'] %>
于 2013-06-17T16:03:52.520 に答える
1

Heroku 以外では、bash と入力して変数をシステム環境 (Linux) にエクスポートします。 export KEY=value 次に、Rails で呼び出すことができます。ENV['KEY']

たとえば
、bash の場合:
export CMS_DATABASE_PASSWORD=MySecurePassword
secrets.yml の場合:
password: <%= ENV['CMS_DATABASE_PASSWORD'] %>

于 2014-12-11T18:49:58.447 に答える