Nicht-interaktive SiteSetting-Änderung über die Befehlszeile

Ich schreibe ein Migrations-Skript und möchte die Site-Einstellung s3_upload_bucket programmatisch setzen. Ich habe eine Methode gefunden, um dies innerhalb der Docker-Instanz zu tun:

echo 'SiteSetting.s3_upload_bucket="mybucket"' | bundle exec rails c

Da dieser Befehl ein Pipe-Symbol enthält, führt das Verketteln mit docker exec -it app <command> zu einem Fehler.

Gibt es eine Möglichkeit, dies zu lösen?

Vielen Dank im Voraus.

Just add that SiteSetting like to your importer. I’ve added similar code to disable outgoing mail to several importers. You can help grep the importer directory for "Site* for examples.

I found the solution!

echo "SiteSetting.sso_url='newurl'" | docker exec -w /var/www/discourse -i app bundle exec rails c

I’m not clear what kind of migration script you’re writing. I do then in ruby and it’s easy to change site settings there.

This is a great trick, though!