【发布时间】:2019-06-28 10:35:35
【问题描述】:
我有一个 Ruby 脚本,它从 远程服务器 获取 PostgreSQL 数据库转储。脚本采用动态输入:密码、用户名、主机和数据库名称。因此,用户有可能为这些字段提供错误的输入。如果输入错误,我会得到 fatal error 像
pg_dump: [archiver (db)] 连接到数据库“sc_development1” 失败:致命:数据库“sc_development1”不存在
如果我们这样做时数据库错误,
system("PGPASSWORD="#{source_postgres_password}" pg_dump -U "#{source_postgres_username}" -h "#{source_host}" "#{source_database_name}" > "#{store_backup_file_path}/#{timestamp}/#{source_database_name}".sql")
目前我正在通过检查$? 来处理此问题以获取进程状态,但我想要更多。我想在日志文件中打印准确的致命错误消息。如何做到这一点?
我想将我在终端中看到的确切的致命错误消息从我运行脚本的位置打印到日志文件。
有什么方法可以给我致命错误的详细信息。我知道在 Ruby 中无法挽救致命错误。当我阅读this 时,我可以打印我自己的消息,因为它会处理致命错误,但这不是我想要的。我想要确切的致命错误消息。
【问题讨论】:
-
顺便说一句,
system命令的参数缺少一些引号。
标签: ruby postgresql pg-dump pg-restore