Ruby隐藏输入密码

标签 ruby postgresql heroku

我编写了一个 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)

我尝试在加载密码后打印密码,并检查它是否是字符串,一切似乎都很好。可能是什么问题?

最佳答案

问题当然是我没有chomp输入,所以我猜终止换行符也作为密码的一部分传递。

正确的做法是这样

pass = STDIN.noecho(&:gets).chomp

关于Ruby隐藏输入密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19081307/

相关文章:

arrays - 如何按段落或 block 将文件读入数组

ruby-on-rails - Rails/Postgres - 我需要什么类型的数据库锁?

ruby - 使 headless 浏览器停止加载页面

ruby-on-rails - 如何对字符串中的每个其他字符执行操作?

ruby-on-rails - Rails + Angular + sqlite3部署

python-3.x - 如何在不使用 Flask 的情况下将 Python 应用程序绑定(bind)到 Heroku 上的端口?

postgresql - 如何批量刷新postgres数据库

postgresql - 我已经创建了一个 PostgreSQL 表,但如果使用 WHERE 参数,则无法 SELECT

tsql - 从链接服务器传输表数据的更快方法

ruby-on-rails - PostgreSQL - 按子句分组或在聚合函数中使用(错误)