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.