0

に遭遇した供給されていません私database.ymlのfe_sendauth:パスワードはここで</p> <p>が関連している...私は多くの人がこの問題に遭遇してきたけど、私は私がアマゾンRDSを使用していますので、私が行うことができますPostgresの構成の限られたよアマゾンRDSで

default: &default 
    host: <%= ENV["POSTGRES_HOST"] %> 
    username: <%= ENV["POSTGRES_USER"] %> 
    password: <%= ENV["POSTGRES_PASSWORD"] %> 
    adapter: postgis 
    encoding: unicode 
    database: <%= ENV["POSTGRES_DB"] %> 
    port: 5432 
    pool: 5 

のセクションIがあるように、ハードコードホストは、他のすべてを残し、かつ負荷はlocalhost:3000、私はfe_sendauth: no password suppliedエラーを取得します。しかし、ENV変数を使用する代わりにすべての値をハードコードすると、エラーなしですべてが正常にロードされます。

私はAmazon RDSを使用していますので、pg_hba.confを編集する能力はありませんが、これはRoRがENV変数にアクセスできないという単純な問題ですか?

+1

通常、UNIX環境変数は、対話シェルを開始するときに読み込まれるファイル(bashシェルの〜/ .bashrcファイル、zshシェルの.zshrc)に設定されます。 環境変数が設定されているかどうかをチェックするには、 'echo $ POSTGRES_USER'を実行し、他の環境変数と同じ値を返すかどうかを確認してください。 そうでない場合は、termianalの 'export POSTFRES_USER =" YOUR_POSTGRES_USERNAME "' を実行してください。新しいシェルを開くか、端末アプリケーションを再起動して続行する必要があります。 上記のコマンドを/ etc/environmentファイルに入れて、システムを再起動するたびに変数をロードすることもできます。 – Meer

答えて

2

あなたのENV値がnilを返すことは明らかです。環境変数は、プロダクションサーバー上でlocalhostと少し違って読み込まれます。ほとんどのデプロイメント構成では、Unix環境変数を設定して、それをENVで検出できるわけではありません。

私は本当にあなたのENV変数がご提供されたコードから設定されているかについて多くを語ることはできませんが、あなたのためにENV変数を管理するために、フィガロ(https://github.com/laserlemon/figaro)またはdotenv(https://github.com/bkeepers/dotenv)を使用して検討すべきです。ただし、ソース管理外の環境変数ファイルを管理する必要があります。

+0

ありがとう! figaroを使用していました。 –

関連する問題

 関連する問題