Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Wie funktioniert 'rails console --sandbox'?

Beitrags-Cover: Wie funktioniert 'rails console --sandbox'?
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.

Wir aktivieren YJIT in Ruby 3.2.1 (Ruby on Rails)
08. Mai, 07:57 Uhr

Wir aktivieren YJIT in Ruby 3.2.1 (Ruby on Rails)

meme code
meme code@memecode
09. Mai, 12:43 Uhr

[Fix] Rails Admin - undefinierte lokale Variable oder Methode javascript_importmap_shim_nonce_configuration_tag

meme code
meme code@memecode
Was ist technischer Schulden (technical debt) in IT-Projekten?
13. Mai, 06:17 Uhr

Was ist technischer Schulden (technical debt) in IT-Projekten?

meme code
meme code@memecode
13. Mai, 07:11 Uhr

Was bedeutet Scope im IT-Projektmanagement?

meme code
meme code@memecode
Was ist "Scope Creep"?
13. Mai, 07:20 Uhr

Was ist "Scope Creep"?

meme code
meme code@memecode
Was bedeutet "Nativ"?
22. Mai, 07:01 Uhr

Was bedeutet "Nativ"?

meme code
meme code@memecode
Wofür wird die CVE-Datenbank (Common Vulnerabilities and Exposures) benötigt?
29. Mai, 08:05 Uhr

Wofür wird die CVE-Datenbank (Common Vulnerabilities and Exposures) benötigt?

meme code
meme code@memecode
29. Mai, 09:09 Uhr

Welche Betriebssysteme unterstützen Ruby?

meme code
meme code@memecode
Erstellt Ruby eine neue Kopie des Objekts, wenn eine Variable einer anderen Variable zugewiesen wird?
29. Mai, 09:30 Uhr

Erstellt Ruby eine neue Kopie des Objekts, wenn eine Variable einer anderen Variable zugewiesen wird?

meme code
meme code@memecode
Was ist der Unterschied zwischen immediate value und reference in Ruby?
29. Mai, 12:00 Uhr

Was ist der Unterschied zwischen immediate value und reference in Ruby?

meme code
meme code@memecode
Warum gibt der Ruby-Code nil zurück, nachdem puts ausgeführt wurde?
29. Mai, 20:30 Uhr

Warum gibt der Ruby-Code nil zurück, nachdem puts ausgeführt wurde?

meme code
meme code@memecode
Was ist der Unterschied zwischen nil und false in Ruby?
29. Mai, 20:59 Uhr

Was ist der Unterschied zwischen nil und false in Ruby?

meme code
meme code@memecode