据我所知,rails db:migrate
只影响开发数据库。
使用rspec
和guard-rspec
运行spring
时,测试环境不会自动应用迁移。相反,你必须让guard
失败,手动运行RAILS_ENV=test rails db:migrate
,并再次运行你的rspec守卫。根据这个问题,这是预期的行为:https://github.com/rails/rails/issues/25804
我怎么能这样做才能让rails db:migrate
同时为这两个环境做这样的事情,或者让spring rspec
自动运行等待测试环境的迁移?
我宁愿避免使用bash / zsh / shell别名,因为它必须在每个人的机器上手动设置。
正如@stuart在评论中所说,唯一的方法是RAILS_ENV=test rails db:migrate && RAILS_ENV=development rails db:migrate
或rails db:migrate db:test:prepare
。