2

我编写了一个 Ruby 脚本,试图连接到 Heroku 上托管的 Postgres 数据库。

如果我使用硬编码密码,或者如果我使用 加载密码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 回答