Fix rake gitlab:incoming_email:check and make it
report error properly, so that we know what's really wrong.
This commit is contained in:
parent
905d24fbdf
commit
7e62ad05b5
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix `rake gitlab:incoming_email:check` and make it report the actual error
|
||||
merge_request: 14423
|
||||
author:
|
||||
type: fixed
|
|
@ -4,22 +4,17 @@ module SystemCheck
|
|||
set_name 'IMAP server credentials are correct?'
|
||||
|
||||
def check?
|
||||
if mailbox_config
|
||||
begin
|
||||
imap = Net::IMAP.new(config[:host], port: config[:port], ssl: config[:ssl])
|
||||
imap.starttls if config[:start_tls]
|
||||
imap.login(config[:email], config[:password])
|
||||
connected = true
|
||||
rescue
|
||||
connected = false
|
||||
end
|
||||
if config
|
||||
try_connect_imap
|
||||
else
|
||||
@error = "#{mail_room_config_path} does not have mailboxes setup"
|
||||
false
|
||||
end
|
||||
|
||||
connected
|
||||
end
|
||||
|
||||
def show_error
|
||||
try_fixing_it(
|
||||
"An error occurred: #{@error.class}: #{@error.message}",
|
||||
'Check that the information in config/gitlab.yml is correct'
|
||||
)
|
||||
for_more_information(
|
||||
|
@ -30,15 +25,31 @@ module SystemCheck
|
|||
|
||||
private
|
||||
|
||||
def mailbox_config
|
||||
return @config if @config
|
||||
def try_connect_imap
|
||||
imap = Net::IMAP.new(config[:host], port: config[:port], ssl: config[:ssl])
|
||||
imap.starttls if config[:start_tls]
|
||||
imap.login(config[:email], config[:password])
|
||||
true
|
||||
rescue => error
|
||||
@error = error
|
||||
false
|
||||
end
|
||||
|
||||
config_path = Rails.root.join('config', 'mail_room.yml').to_s
|
||||
erb = ERB.new(File.read(config_path))
|
||||
erb.filename = config_path
|
||||
def config
|
||||
@config ||= load_config
|
||||
end
|
||||
|
||||
def mail_room_config_path
|
||||
@mail_room_config_path ||=
|
||||
Rails.root.join('config', 'mail_room.yml').to_s
|
||||
end
|
||||
|
||||
def load_config
|
||||
erb = ERB.new(File.read(mail_room_config_path))
|
||||
erb.filename = mail_room_config_path
|
||||
config_file = YAML.load(erb.result)
|
||||
|
||||
@config = config_file[:mailboxes]&.first
|
||||
config_file.dig(:mailboxes, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue