プログラミングと旅と映画の日々

食品の営業からSEに転職した文系エンジニアです。 プログラミングと趣味の株に関してブログを書いていこうと思います。

【Ruby on Rails】rails consoleをサンドバッグモードで起動する

f:id:takanori5:20180113103312p:plain
サンドボックスモードで起動する。
このモードで起動するとコンソール自体が一つのトランザクションになるので色々便利

コンソール終了時にデータベースに関する変更をロールバックすることが可能に。

sandboxオプションをつけて起動する方法は以下のコマンド

rals c --sandbox(もしくは--s)


やってみます。

hodzumitakanori-no-MacBook-Air:sample_app hodzumitakanori$ rails c --sandbox
Running via Spring preloader in process 5428
Loading development environment in sandbox (Rails 5.1.2)
Any modifications you make will be rolled back on exit
irb(main):001:0> 


Any modifications you make will be rolled back on exit
(あなたが行った変更は、終了時にロールバックされます)
とメッセージが出ています。

hodzumitakanori-no-MacBook-Air:sample_app hodzumitakanori$ rails c -s
Running via Spring preloader in process 5545
Loading development environment in sandbox (Rails 5.1.2)
Any modifications you make will be rolled back on exit
Cannot read termcap database;
using dumb terminal settings.
irb(main):001:0> User.create(name: "Hozumi", email: "hozu@mail")
   (0.1ms)  SAVEPOINT active_record_1
  SQL (0.5ms)  INSERT INTO "users" ("name", "email", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["name", "Hozumi"], ["email", "hozu@mail"], ["created_at", "2018-01-13 01:30:04.398166"], ["updated_at", "2018-01-13 01:30:04.398166"]]
   (0.1ms)  RELEASE SAVEPOINT active_record_1
=> #<User id: 2, name: "Hozumi", email: "hozu@mail", created_at: "2018-01-13 01:30:04", updated_at: "2018-01-13 01:30:04">
irb(main):002:0> User.all
  User Load (0.3ms)  SELECT  "users".* FROM "users" LIMIT ?  [["LIMIT", 11]]
=> #<ActiveRecord::Relation [#<User id: 1, name: "Hozumi", email: "hozu@mail", created_at: "2018-01-13 01:27:21", updated_at: "2018-01-13 01:27:21">, #<User id: 2, name: "Hozumi", email: "hozu@mail", created_at: "2018-01-13 01:30:04", updated_at: "2018-01-13 01:30:04">]>
irb(main):003:0> exit
   (2.3ms)  rollback transaction

exitでrollbackされました!