gpt4 book ai didi

ruby - 如何使用Ruby在密码失败时输出其他错误消息

转载 作者:行者123 更新时间:2023-12-03 08:50:36 24 4
gpt4 key购买 nike

我正在尝试帮助改进此开源存储库:https://github.com/michenriksen/birdwatcher/。目前,如果用户输入了错误的postgreSQL密码,则存储库将输出:

[-] Sequel::DatabaseConnectionError: PG::ConnectionBad: FATAL:  password authentication failed for user "birdwatcher"
FATAL: password authentication failed for user "birdwatcher"

这并不是特别有用,因为它无法向用户提供任何指示该如何解决该错误的指示(gem uninistall并重新安装也无法修复该错误)。除了当前生成的输出之外,我还希望它输出:

Please edit the ~/.birdwatcherrc file with the correct password, or delete the file entirely, then run birdwatcher again.



当前,通过浏览存储库,我隔离了以下代码:
def bootstrap_database!
task "Preparing database...", true do
Sequel.extension :migration, :core_extensions
@database = Sequel.connect(configuration.get!(:database_connection_uri))
Sequel::Migrator.run(@database, DB_MIGRATIONS_PATH)
Sequel::Model.db = @database
Sequel::Model.plugin :timestamps
bootstrap_models!
load_default_workspace!
end
end

( https://github.com/michenriksen/birdwatcher/blob/master/lib/birdwatcher/console.rb)

哪个似乎是相关的部分?但是,我找不到任何看起来好像会生成错误消息的东西。有谁知道如何找到它,并在其中添加错误消息?也许正在执行此操作的一个调用函数库中存在默认错误处理,并且当引发特定错误时,我可以调用添加其他消息?

它会像 puts "Please edit the ~/.birdwatcherrc file with the correct password, or delete the file entirely, then run birdwatcher again."一样简单,还是我需要更高级的东西?

任何帮助,不胜感激。我从来没有亲自编写过Ruby gem,因此我不确定100%在哪里编辑以及如何编辑,除非我知道怎么做似乎只是一个简单的任务。显然,作者已经在存储库中做了很多工作,因此,我想帮助他们使它更好

最佳答案

配置连接或运行第一个查询时,可能会引发错误。这发生在以下两行中:

@database = Sequel.connect(configuration.get!(:database_connection_uri))
Sequel::Migrator.run(@database, DB_MIGRATIONS_PATH)

只需用 rescue块包装引发错误的行即可:
begin
# line that raise the exception
rescue Sequel::DatabaseConnectionError
puts 'Please edit the ~/.birdwatcherrc file with the correct password, or delete the file entirely, then run birdwatcher again.'
raise # re-raises the original method
end

关于ruby - 如何使用Ruby在密码失败时输出其他错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41912903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com