2

Heroku でホストされている Postgres データベースに接続しようとする Ruby スクリプトを作成しました。

ハードコードされたパスワードを使用するか、または を使用してパスワードをロードするとgets、すべて正常に動作します。ただし、を使用してパスワードをロードするとIO.noecho、次の例外が発生します。

storing.rb:11:in `initialize': FATAL:  password authentication failed for user "***" (PG::ConnectionBad)
FATAL:  no pg_hba.conf entry for host "****", user "***", database "***", SSL off
    from storing.rb:11:in `new'
    from storing.rb:11:in `create_conn'
    from fetch_currencies.rb:11:in `<main>'

これが私のコードです:

def create_conn(password)
    conn = PGconn.connect(
        :host => '***',
        :port => 5432,
        :dbname => '***',
        :user => '***',
        :password => password)
    return conn
end

puts 'Postgres DB password:'
pass = STDIN.noecho(&:gets)
conn = create_conn(pass)

パスワードを読み込んだ後、パスワードを印刷してみました。また、それが文字列かどうかを確認しましたが、すべて問題ないようです。何が問題なのですか?

4

1 に答える 1

2

もちろん、問題は私が入力しなかっchompたことだったので、パスワードの一部として終了改行文字も渡されたと思います。

そのときの正しい道は

pass = STDIN.noecho(&:gets).chomp
于 2013-09-29T17:58:19.780 に答える