使用Ruby on Rails,有没有办法将我的生产数据库转储到Rails的测试部分可以访问的表单中?
我正在考虑将生产数据库转换为固定装置的方法,或者将数据从生产数据库迁移到测试数据库中的方法,这些方法不会被Rails定期清除。
我想将这些数据用于各种测试,但最重要的是在我的脑海中使用真实数据和性能测试,这样我才能真正理解加载时间。
答案 0 :(得分:4)
您还可以查看http://github.com/napcs/lazy_developer,这样您就可以将生产数据放入yaml文件中。
答案 1 :(得分:2)
我们遇到了类似的问题,最后在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
答案 2 :(得分:0)
您可以在db文件夹中使用seed.rb,使用您需要的数据填充测试数据库。 Railscasts上有一个很好的例子:http://railscasts.com/episodes?search=seed
建议您将生产数据远离测试环境。并做备份!!!