我正在开发Ruby on Rails应用程序。我最近更新到最后一个Rails版本(4.2.3),当我运行rake test
时,我发现它擦除了我的开发数据库。我正在使用Figaro gem来声明我的所有环境变量。
这是我的application.yml文件:
#
# == Database
#
db_host : 'localhost'
db_username: 'root'
db_password: 'root'
development:
db_name: 'database-dev' # Not found by Figaro
test:
db_name: 'database-test' # Not found by Figaro
我的database.yml文件:
default: &default
adapter: mysql2
pool: 5
timeout: 5000
username: <%= Figaro.env.db_username %>
password: <%= Figaro.env.db_password %>
database: <%= Figaro.env.db_name %>
development:
<<: *default
test:
<<: *default
如果我将db_name
置于development
键下,我会收到消息no database selected
,但如果我将其移至上一级则可以正常工作。但是rake test
不使用test
键来加载数据库配置并擦除我的开发数据。
以前工作得很好,我不明白出了什么问题。 谢谢你的帮助。
我的项目:
答案 0 :(得分:0)
您能否展示一下您是如何运行测试规范的?你有什么环境设置(在config / environment目录下)?另外,你运行的是什么版本的RSpec(你是否安装了rspec-rails gem)?
您的spec_helper.rb
文件(或使用RSpec 3.x rails_helper.rb
)应该在顶部显示此行:
ENV['RAILS_ENV'] ||= 'test'
如果没有,请尝试添加它。此外,您可以尝试添加用于调试的print语句:
puts ENV['RAILS_ENV']
一般情况下,这应该始终有效,但它很丑陋(你不应该这样做):
RAILS_ENV=test bundle exec rspec spec