Rails console --sandbox

Dicas - 20/Dez/2020 - por André Kanamura

O Rails possui uma série de funcionalidades de linha de comando, como rails new para criar uma aplicação, rails db:migrate para rodar migrações, entre muitas outras. O rails console permite que você interaja com a sua aplicação por meio do Terminal, o que é bastante útil para editar dados no servidor, sem interagir com o site. Mas se você quiser apenas fazer testes, sem tocar nos dados da aplicação, sugerimos que use o comando rails console --sandbox. Com ele a mesma interface do console é chamada, com a seguinte mensagem:

$ rails c --sandbox
Loading development environment in sandbox (Rails 5.2.4.4)
Any modifications you make will be rolled back on exit
irb(main):001:0> 

Any modifications you make will be rolled back on exit

Em tradução livre "Qualquer modificação realizada será revertida ao sair". Vamos mostrar um exemplo.

irb(main):001:0> Book.create(title: "Título do livro", author: "Autora", publication_year: 2000)
   (0.1ms)  SAVEPOINT active_record_1
  Book Create (0.7ms)  INSERT INTO "books" ("title", "author", "publication_year", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?)  [["title", "Título do livro"], ["author", "Autora"], ["publication_year", 2000], ["created_at", "2020-12-14 19:48:32.675570"], ["updated_at", "2020-12-14 19:48:32.675570"]]
   (0.1ms)  RELEASE SAVEPOINT active_record_1
=> #<Book id: 1, title: "Título do livro", author: "Autora", publication_year: 2000, created_at: "2020-12-14 19:48:32", updated_at: "2020-12-14 19:48:32">
irb(main):002:0> Book.all
  Book Load (0.2ms)  SELECT  "books".* FROM "books" LIMIT ?  [["LIMIT", 11]]
=> #<ActiveRecord::Relation [#<Book id: 1, title: "Título do livro", author: "Autora", publication_year: 2000, created_at: "2020-12-14 19:48:32", updated_at: "2020-12-14 19:48:32">]>
irb(main):003:0> exit
   (0.7ms)  rollback transaction

Quando fechamos o console, a última ação executada é um rollback transaction. Assim, tudo que foi feito nessa sessão é revertido de volta ao estado anterior.

Referências

Foto de perfil do autor
André Kanamura

Dev na Campus Code