An error occurred while loading ./plugins/poll/spec/integration/poll_endpoints_spec.rb.
Failure/Error: raise ArgumentError.new(“No setting named ‘#{name}’ exists”)
To run just the poll specs the command is: bundle exec rake "plugin:spec[poll]" (or shorter: bin/rake "plugin:spec[poll]") otherwise you’re running all plugins specs.
Regarding the error you’re getting, I’m not sure. Is the test database migrated? (bin/rails db:migrate RAILS_ENV=test)
Thanks. Like you said, it did run all the plugin specs, which I worked around by removing the other plugins. I was basing off of this, but it turns out the parentheses were in the wrong spot.
Yes, the database is migrated in the test environment. I worked around this error by commenting out the raise ArgumentError.new("No setting named '#{name}' exists") line and replacing it with a puts, and it shows only discourse_narrative_bot_enabled triggers this error; all other settings are fine. I don’t think we did anything with this setting. Anyway, since my spec run properly while ignoring this error, I can leave the workaround in my local discourse. When I find what actually caused this, I’ll update this post.
Unser CI funktioniert für PRs und Commits, aber bei Cron-Jobs schlägt es hier jedes Mal fehl.
Ich kann dies in der Rails-Konsole mit einem ähnlichen Block reproduzieren:
[19] pry(main)> SiteSetting.defaults.tap do |s|
[19] pry(main)* s.set_regardless_of_locale(:discourse_narrative_bot_enab, false)
[19] pry(main)* end
ArgumentError: No setting named 'discourse_narrative_bot_enab' exists
Dies funktioniert, wenn ich folgendes eingebe:
[21] pry(main)> SiteSetting.defaults.tap do |s|
[21] pry(main)* if s.has_setting? :discourse_narrative_bot_enab
[21] pry(main)* s.set_regardless_of_locale(:discourse_narrative_bot_enab, false)
[21] pry(main)* end
[21] pry(main)* end
Und nur zur Überprüfung, es schlägt fehl mit:
[21] pry(main)> SiteSetting.defaults.tap do |s|
[21] pry(main)* if s.has_setting? :discourse_narrative_bot_enabled
[21] pry(main)* s.set_regardless_of_locale(:discourse_narrative_bot_enab, false)
[21] pry(main)* end
[21] pry(main)* end
Daher schlage ich die folgende Änderung in einem PR vor, den ich gerne einreichen würde:
if ENV['LOAD_PLUGINS'] == '1' && s.has_setting? :discourse_narrative_bot_enabled
Aus irgendeinem Grund kann die Anwesenheit des Narrative Bot-Plugins nicht garantiert werden?
In diesen Beispielen haben Sie die Website-Einstellung als discourse_narrative_bot_enab und nicht als discourse_narrative_bot_enabled. Ich vermute, sobald das korrigiert ist, ist es nicht reproduzierbar?
Das Überraschendste hier ist:
Das deutet auf einen Unterschied in der Laufzeitumgebung für die geplanten Läufe hin
Wenn ich mir einen der fehlgeschlagenen Logs ansehe, scheint es, dass GitHub das multilingual-Plugin direkt in das plugins-Verzeichnis klont, anstatt in sein eigenes Verzeichnis. Es deinstalliert also im Wesentlichen alle Kern-Plugins (und installiert sich selbst nicht richtig).
Wenn ich mir die Dokumentation ansehe, gibt es keinen konsistenten Weg, den Repository-Namen (ohne den Besitzer) zu erhalten, daher benötigen wir einige Tricks. Ich denke, das sollte funktionieren:
cc @cvx - vielleicht sollten wir diese Technik in der CI der Plugin/Theme-Vorlage verwenden?