Der Build ist deswegen fehlgeschlagen. Ich habe die ENV-Variable entfernt und ohne sie neu kompiliert. Dann ging es an das Debugging innerhalb des Containers. Dort habe ich den Schlüssel zu discourse.conf hinzugefügt, es schlägt immer noch fehl.
(Zum Glück habe ich das getan, bevor ich dem Kunden gesagt habe, dass er mir einen ungültigen Schlüssel gegeben hat!)
Ich habe ein puts zur Rake-Aufgabe hinzugefügt, um die URL auszugeben, von der die Datenbank heruntergeladen werden soll, wie folgt:
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)
Jetzt bekomme ich das:
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)
Es gab ein anderes Thema, bei dem das Problem darin bestand, dass die Seite von Maxmind blockiert wurde. Ich habe versucht, diese URL mit wget vom Server in Frage aus herunterzuladen, und das hat erfolgreich funktioniert.
Mir scheint, dass FileHelper.download nicht viel von einem Helper ist und stillschweigend nil anstelle einer Datei zurückgibt. Die Datei ist nur 44 MB groß, also liegt es nicht daran. Wenn ich die vollständigen Header mit wget überprüfe, sehe ich keine Umleitung.
Irgendwelche Ideen, was das Problem sein könnte?
Gibt es einen Grund, diesen Fehler nicht abzufangen und einen Build mit einem ungültigen Schlüssel abzuschließen? Vielleicht nur eine Warnung ausgeben?