← strona głównaProgramowanie (Програмування)

Jak działa 'rails console --sandbox'?

Jak działa 'rails console --sandbox'? Przykład działania konsoli Rails z flagą 'sandbox'.

Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
rails console --sandbox uruchamia konsolę Rails w specjalnym trybie, w którym wszystkie zmiany wprowadzone w bazie danych są automatycznie cofane po zakończeniu sesji konsoli. Ta opcja zapewnia bezpieczne środowisko do testowania, w którym możesz eksperymentować z danymi, nie martwiąc się o trwałe zmiany.
Nigdy wcześniej nie używałem opcji --sandbox. Ale w ostatnich dniach zacząłem ją aktywnie wykorzystywać. Czasami zdarza się, że po zanieczyszczeniu lokalnej bazy danych trzeba ją zresetować. Piaskownica pozwala zaoszczędzić trochę czasu. Wszystkie działania w konsoli są owinięte w dużą, inteligentną atomową transakcję.

Jak działa rails console --sandbox?

Użycie polecenia rails console --sandbox otwiera interaktywną konsolę w 'trybie bezpiecznym'. Każda operacja na bazie danych odbywa się wewnątrz transakcji. Po wyjściu z konsoli wszystkie transakcje są automatycznie cofane. To pozwala bezpiecznie testować zmiany i sprawdzać kod bez ryzyka uszkodzenia danych w bazie danych.

Przykład

rails console --sandbox 
Konsola powie nam:
Loading development environment in sandbox (Rails 7.0.4.3)
Any modifications you make will be rolled back on exit
Stwórzmy użytkownika:
User.create!(name: 'R2D2', email: '[email protected]', password: 'Password666%', password_confirmation: 'Password666%')
Otrzymamy taki log:
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" ....>
Zwróć uwagę na TRANSACTION (1.9ms)  RELEASE SAVEPOINT active_record_1
Wychodzimy z konsoli (transakcja powinna się cofnąć). Wchodzimy ponownie i sprawdzamy User.last.id. W piaskownicy stworzyliśmy użytkownika z id 41.
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
Widzimy, że ostatni zapisany użytkownik to 40. To znaczy, że transakcja zadziałała.

🔥 Więcej postów

Wszystkie wpisy
Co oznacza "Nattywny"?
Terminy (Терміни)22 maj '24 07:01

Co oznacza "Nattywny"?

Czym jest natywny? Dowiedz się, co oznacza termin "natywny" z przykładami użycia w różnych dziedz...