使用 Ruby on Rails,我有没有办法将我的生产数据库转储为 Rails 的测试部分可以访问的表单?
我正在考虑将生产数据库转换为固定装置的方法,或者将数据从生产数据库迁移到不会被 Rails 例行清除的测试数据库的方法。
我想将这些数据用于各种测试,但我认为最重要的是在性能测试中使用真实数据,这样我才能对加载时间有一个真实的了解。
使用 Ruby on Rails,我有没有办法将我的生产数据库转储为 Rails 的测试部分可以访问的表单?
我正在考虑将生产数据库转换为固定装置的方法,或者将数据从生产数据库迁移到不会被 Rails 例行清除的测试数据库的方法。
我想将这些数据用于各种测试,但我认为最重要的是在性能测试中使用真实数据,这样我才能对加载时间有一个真实的了解。
您还可以查看http://github.com/napcs/lazy_developer,这将允许您将生产数据放入 yaml 文件中。
我们刚刚遇到了类似的问题,最终在 rspec 中编写了一个辅助方法,该方法从生产数据库中获取一些数据(在我们的例子中,是一些帐户的登录详细信息)。
下面应该给出一个想法:
require 'yaml'
def accounts
@accounts ||= lambda {
config = YAML.load_file("#{Rails.root}/config/database.yml")['production']
dbh = Mysql.real_connect(config['host'], config['username'], config['password'], config['database'])
accounts = []
result = dbh.query("SELECT `accounts`.* FROM `accounts`")
while row = result.fetch_hash do
row.delete("id")
accounts << Account.make(row)
end
dbh.close
return accounts
}.call
end
您可以使用 db 文件夹中的 seed.rb,用您需要的数据填充您的测试数据库。Railscasts 上有一个很好的例子:http: //railscasts.com/episodes?search=seed
建议您将生产数据远离测试环境。并做好备份!!!