Einige assets-bezogene Aufgaben werden beim Start der App ausgeführt

Ich habe mich gefragt … gibt es eine Rake-Aufgabe, die wir ausführen können, um diese Plugin-Verwaltung zu übernehmen, anstatt dies während des Starts der Anwendung zu tun? Wir betreiben unsere Instanzen mit AppArmor und möchten vermeiden, dem App-Server das Schreiben von Anwendungsdateien zu erlauben.

systemd[1]: Stopped Discourse Puma.
systemd[1]: Started Discourse Puma.
bundler.ruby2.6-2.1.4[28628]: `/srv/www/vhosts//discourse/` ist nicht beschreibbar.
bundler.ruby2.6-2.1.4[28628]: Bundler verwendet vorübergehend `/tmp/bundler20200127-28628-npwuek28628` als Ihr Home-Verzeichnis.
bundler.ruby2.6-2.1.4[28628]: [28628] Puma startet im Cluster-Modus...
bundler.ruby2.6-2.1.4[28628]: [28628] * Version 4.3.1 (Ruby 2.6.5-p114), Codename: Mysterious Traveller
bundler.ruby2.6-2.1.4[28628]: [28628] * Min-Threads: 4, Max-Threads: 8
bundler.ruby2.6-2.1.4[28628]: [28628] * Umgebung: production
bundler.ruby2.6-2.1.4[28628]: [28628] * Prozess-Worker: 2
bundler.ruby2.6-2.1.4[28628]: [28628] * Vorladen der Anwendung
bundler.ruby2.6-2.1.4[28628]: [28628] ! Anwendung konnte nicht geladen werden: Errno::EACCES: Zugriffsverweigert @ apply2files - app/assets/javascripts/plugins/discourse-details.js.erb
bundler.ruby2.6-2.1.4[28628]: bundler: Befehl konnte nicht geladen werden: /usr/bin/puma.ruby2.6 (/usr/bin/puma.ruby2.6)
bundler.ruby2.6-2.1.4[28628]: Errno::EACCES: Zugriffsverweigert @ apply2files - app/assets/javascripts/plugins/discourse-details.js.erb
bundler.ruby2.6-2.1.4[28628]:   lib/plugin/instance.rb:559:in `delete'
bundler.ruby2.6-2.1.4[28628]:   lib/plugin/instance.rb:559:in `activate!'
bundler.ruby2.6-2.1.4[28628]:   lib/discourse.rb:191:in `block in activate_plugins!'
bundler.ruby2.6-2.1.4[28628]:   lib/discourse.rb:188:in `each'
bundler.ruby2.6-2.1.4[28628]:   lib/discourse.rb:188:in `activate_plugins!'
bundler.ruby2.6-2.1.4[28628]:   config/application.rb:270:in `block in <class:Application>'
bundler.ruby2.6-2.1.4[28628]:   lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
bundler.ruby2.6-2.1.4[28628]:   config/application.rb:269:in `<class:Application>'
bundler.ruby2.6-2.1.4[28628]:   config/application.rb:59:in `<module:Discourse>'
bundler.ruby2.6-2.1.4[28628]:   config/application.rb:58:in `<top (required)>'
bundler.ruby2.6-2.1.4[28628]:   config/environment.rb:4:in `require'
bundler.ruby2.6-2.1.4[28628]:   config/environment.rb:4:in `<top (required)>'
bundler.ruby2.6-2.1.4[28628]:   config.ru:6:in `require'
bundler.ruby2.6-2.1.4[28628]:   config.ru:6:in `block in <main>'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/rack-2.0.8/lib/rack/builder.rb:55:in `instance_eval'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/rack-2.0.8/lib/rack/builder.rb:55:in `initialize'
bundler.ruby2.6-2.1.4[28628]:   config.ru:in `new'
bundler.ruby2.6-2.1.4[28628]:   config.ru:in `<main>'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/rack-2.0.8/lib/rack/builder.rb:49:in `eval'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/rack-2.0.8/lib/rack/builder.rb:49:in `new_from_string'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/rack-2.0.8/lib/rack/builder.rb:40:in `parse_file'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/puma-4.3.1/lib/puma/configuration.rb:321:in `load_rackup'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/puma-4.3.1/lib/puma/configuration.rb:246:in `app'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/puma-4.3.1/lib/puma/runner.rb:155:in `load_and_bind'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/puma-4.3.1/lib/puma/cluster.rb:413:in `run'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/puma-4.3.1/lib/puma/launcher.rb:172:in `run'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/puma-4.3.1/lib/puma/cli.rb:80:in `run'
bundler.ruby2.6-2.1.4[28628]:   /usr/lib64/ruby/gems/2.6.0/gems/puma-4.3.1/bin/puma:10:in `<top (required)>'
bundler.ruby2.6-2.1.4[28628]:   /usr/bin/puma.ruby2.6:23:in `load'
bundler.ruby2.6-2.1.4[28628]:   /usr/bin/puma.ruby2.6:23:in `<top (required)>'
systemd[1]: discourse-puma.service: Hauptprozess beendet, code=exited, status=1/FAILURE
systemd[1]: discourse-puma.service: Einheit ist in den Fehlerzustand übergegangen.
systemd[1]: discourse-puma.service: Fehlgeschlagen mit Ergebnis 'exit-code'.
systemd[1]: discourse-puma.service: Service RestartSec=100ms abgelaufen, Neustart geplant.
systemd[1]: Stopped Discourse Puma.

Dies betrifft Version 2.4.0.beta10.

Dafür werden hier Änderungen erforderlich sein

Wir löschen bedingungslos eine Datei für Plugins, die beim Start des Plugins JS-Assets definieren. Ich vermute, wir könnten diese Vorgänge stattdessen im Ordner tmp durchführen.

Warum nicht als Teil der normalen Asset-Rake-Aufgabe?

Soweit ich weiß, bin ich nicht gegen eine Änderung. Dies ist hauptsächlich aus historischen Gründen so, und eine Änderung wäre ziemlich komplex.