InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
rails console --sandbox startet die Rails-Konsole im speziellen Modus, in dem alle Änderungen an der Datenbank nach Beendigung der Konsolensitzung automatisch zurückgesetzt werden. Dieses Flag bietet eine sichere Umgebung für Tests, in der Sie mit Daten experimentieren können, ohne sich um dauerhafte Änderungen sorgen zu müssen.
Ich habe die Option --sandbox noch nie zuvor verwendet. Aber in den letzten Tagen habe ich angefangen, sie aktiv zu nutzen. Manchmal ist es so, dass man, nachdem man in der lokalen Datenbank herumgespielt hat, sie zurücksetzen muss. Die Sandbox ermöglicht es, ein wenig Zeit zu sparen. Alle Aktionen in der Konsole sind in eine große, intelligente atomare Transaktion eingebettet.
Wie funktioniert rails console --sandbox?
Die Verwendung des Befehls rails console --sandbox öffnet eine interaktive Konsole im 'sicheren Modus'. Jede Datenbankoperation erfolgt innerhalb einer Transaktion. Nach dem Verlassen der Konsole werden alle Transaktionen automatisch zurückgesetzt. Dies ermöglicht es, Änderungen sicher zu testen und Code zu überprüfen, ohne das Risiko einer Beschädigung der Daten in der Datenbank.
Beispiel
rails console --sandbox
Die Konsole wird uns sagen:
Loading development environment in sandbox (Rails 7.0.4.3) Any modifications you make will be rolled back on exit
Wir erstellen einen Benutzer:
User.create!(name: 'R2D2', email: '[email protected]', password: 'Password666%', password_confirmation: 'Password666%')
Wir erhalten folgendes Protokoll:
irb(main):001:0> User.create!(name: 'R2D2', email: '[email protected]', passw ord: 'Password666%', password_confirmation: 'Password666%') TRANSACTION (0.8ms) BEGIN TRANSACTION (0.6ms) SAVEPOINT active_record_1 User Exists? (3.8ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "[email protected]"], ["LIMIT", 1]] User Create (5.4ms) INSERT INTO "users" ............ TRANSACTION (1.9ms) RELEASE SAVEPOINT active_record_1 => #<User id: 41, email: "[email protected]", created_at: "2024-05-23 19:31:20.142273000 +0000", updated_at: "2024-05-23 19:31:20.142273000 +0000", name: "R2D2" ....>
Beachten Sie TRANSACTION (1.9ms) RELEASE SAVEPOINT active_record_1
Wir verlassen die Konsole (die Transaktion sollte zurückgesetzt werden). Wir gehen erneut hinein und überprüfen User.last.id. In der Sandbox haben wir einen Benutzer mit der ID 41 erstellt.
irb(main):002:0> exit ~/Documents/experiments/sandbox rails console Loading development environment (Rails 7.0.4.3) irb(main):001:0> User.last.id User Load (1.9ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT $1 [["LIMIT", 1]] => 40
Wir sehen, dass der letzte gespeicherte Benutzer - 40 ist. Das heißt, die Transaktion hat funktioniert.
Dieser Beitrag hat noch keine Ergänzungen vom Autor.