A compilação falhou por causa disso. Removi a variável ENV e reconstruí sem ela. Em seguida, fui para a depuração dentro do contêiner. Onde adicionei a chave a discourse.conf, ainda está falhando.
(Felizmente, fiz isso antes de dizer ao cliente que ele me deu uma chave inválida!)
Adicionei um puts à tarefa rake para imprimir a URL que está tentando baixar o banco de dados assim:
url =
"https://download.maxmind.com/app/geoip_download?license_key=#{GlobalSetting.maxmind_license_key}&edition_id=#{name}&suffix=tar.gz"
gz_file =
FileHelper.download(
url,
max_file_size: 100.megabytes,
tmp_file_name: "#{name}.gz",
validate_uri: false,
follow_redirect: false,
)
if gz_file.nil?
puts "no gzfile"
end
puts "Got file #{gz_file} for #{url}"
filename = File.basename(gz_file.path)
Agora recebo isto:
root@web-only:/var/www/discourse# rake maxminddb:get
Plugin name is 'discourse-topic-voting', but plugin directory is named 'discourse-voting'
Downloading MaxMindDb's GeoLite2-City...
no gzfile
Got file for https://download.maxmind.com/app/geoip_download?license_key=VALID_KEY_IS_HERE&edition_id=GeoLite2-City&suffix=tar.gz
rake aborted!
NoMethodError: undefined method `path' for nil:NilClass (NoMethodError)
filename = File.basename(gz_file.path)
^^^^^
/var/www/discourse/lib/discourse_ip_info.rb:52:in `mmdb_download'
/var/www/discourse/lib/tasks/maxminddb.rake:9:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `each'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => maxminddb:get
(See full trace by running task with --trace)
Houve outro tópico onde o problema era que o site estava bloqueado pela Maxmind, então tentei, e baixei com sucesso essa URL com wget de dentro do contêiner no servidor em questão.
Parece-me que FileHelper.download não é muito um Helper, afinal, e está silenciosamente retornando nil em vez de um arquivo. O arquivo tem apenas 44MB, então não é isso. Quando verifico os cabeçalhos completos com wget, não vejo um redirecionamento.
Alguma ideia do que pode ser?
Existe alguma razão para não capturar este erro e deixar uma compilação ser concluída com uma chave inválida? Talvez apenas imprimir um aviso?