#問題
rails test
をするとbin/rails db:migrate RAILS_ENV=test
が表示されたので、指示通りコンソールに打つとすると今度はdevelopment.sqlite3
が使えなくなった。
development.sqlite3
とtest.sqlite3
をうまく共存?させる方法を探してみた。
#解決までの流れ
上手くmigrationが出来なかったのかなと思い`rails db:migration:resetをやってみるも
$ rails db:migrate:reset
Couldn't drop database 'db/development.sqlite3'
rails aborted!
Errno::EACCES: Permission denied @ unlink_internal - C:/Users/siron/siro_app/db/development.sqlite3
bin/rails:4:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)
上手くdropができなかったみたいなのでunsafeな方法であるが強制的にdropしてみる。
$ rails db:drop:_unsafe
上手くdrop出来たので次にdatabase.yml
の内容でデータベースを作成していつも通りmigrationをする。
$ rails db:create:all
$ rails db:migrate
この流れでdevelopment.sqlite3が有効になるが
$ rails t
と入力すると
Migrations are pending. To resolve this issue, run:
bin/rails db:migrate RAILS_ENV=test
相変わらずこのような表示が出てくるのでtest.sqlite3は有効化されていないらしい。
なので表示通りにtest.sqlite3もmigrationする
$ rails db:migrate RAILS_ENV=test
== 20181027102656 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0042s
-- add_index(:users, :email, {:unique=>true})
-> 0.0332s
== 20181027102656 CreateUsers: migrated (0.0385s) =============================
== 20181028035604 AddPasswordDigestToUsers: migrating =========================
-- add_column(:users, :password_digest, :string)
-> 0.0075s
== 20181028035604 AddPasswordDigestToUsers: migrated (0.0177s) ================
この一連の流れでmigrationしたらdevelopment.sqlite3とtest.sqlite3どちらも有効化され、データ作成・テスト共にうまくいった。
#お願い
当方プログラミング初心者な為、この記事を見て違和感を感じる表現や間違った解決方法がありましたらご指摘願いたいです。
#参考にした記事
https://qiita.com/parsetree/items/e9b08c6b11f762b949de