5

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

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

我想将这些数据用于各种测试,但我认为最重要的是在性能测试中使用真实数据,这样我才能对加载时间有一个真实的了解。

4

3 回答 3

4

您还可以查看http://github.com/napcs/lazy_developer,这将允许您将生产数据放入 yaml 文件中。

于 2010-04-14T15:39:43.623 回答
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
于 2010-05-28T11:31:36.900 回答
0

您可以使用 db 文件夹中的 seed.rb,用您需要的数据填充您的测试数据库。Railscasts 上有一个很好的例子:http: //railscasts.com/episodes?search=seed

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

于 2010-04-12T22:40:21.400 回答