La compilation a échoué à cause de cela. J’ai supprimé la variable d’environnement et j’ai reconstruit sans elle. Ensuite, je suis passé au débogage à l’intérieur du conteneur. où j’ai ajouté la clé à discourse.conf, cela échoue toujours.
(Heureusement, j’ai fait cela avant de dire au client qu’il m’avait donné une clé invalide !)
J’ai ajouté un puts à la tâche rake pour imprimer l’URL à partir de laquelle il essaie de télécharger la base de données comme ceci :
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)
Maintenant, j’obtiens ceci :
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)
Il y avait un autre sujet où le problème était que le site était bloqué par Maxmind, j’ai donc essayé, et téléchargé avec succès cette URL avec wget depuis l’intérieur du conteneur sur le serveur en question.
Il me semble que FileHelper.download n’est pas vraiment une Helper après tout et retourne silencieusement nil au lieu d’un fichier. Le fichier ne fait que 44 Mo, donc ce n’est pas ça. Lorsque je vérifie les en-têtes complets avec wget, je ne vois aucune redirection.
Des idées sur ce qui pourrait se passer ?
Y a-t-il une raison de ne pas attraper cette erreur et de laisser une compilation se terminer avec une clé invalide ? Peut-être juste imprimer un avertissement ?