Ruby on Rails:访问生产数据库数据以进行测试

时间:2010-04-12 21:43:28

标签: ruby-on-rails database performance testing fixtures

使用Ruby on Rails,有没有办法将我的生产数据库转储到Rails的测试部分可以访问的表单中?

我正在考虑将生产数据库转换为固定装置的方法,或者将数据从生产数据库迁移到测试数据库中的方法,这些方法不会被Rails定期清除。

我想将这些数据用于各种测试,但最重要的是在我的脑海中使用真实数据和性能测试,这样我才能真正理解加载时间。

3 个答案:

答案 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

建议您将生产数据远离测试环境。并做备份!!!