Ruby on Rails: доступ к данным производственной базы данных для тестирования - PullRequest
5 голосов
/ 13 апреля 2010

С Ruby on Rails, есть ли способ для меня вывести свою производственную базу данных в форму, к которой может получить доступ тестовая часть Rails?

Я подумываю либо о способе преобразования производственной базы данных в фиксаторы, либо о способе переноса данных из производственной базы данных в тестовую базу данных, которые не будут регулярно очищаться Rails.

Я хотел бы использовать эти данные для различных тестов, но самое главное, на мой взгляд, использовать реальные данные с тестами производительности, чтобы я мог получить реалистичное представление о времени загрузки.

Ответы [ 3 ]

4 голосов
/ 14 апреля 2010

Вы также можете проверить http://github.com/napcs/lazy_developer, что позволит вам поместить производственные данные в файлы yaml.

2 голосов
/ 28 мая 2010

У нас только что была похожая проблема, и мы закончили писать вспомогательный метод в 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
0 голосов
/ 13 апреля 2010

Вы можете использовать seed.rb внутри папки db, заполнить тестовую базу данных необходимыми данными. На Railscasts есть хороший пример: http://railscasts.com/episodes?search=seed

Рекомендую, однако, держать свои производственные данные вдали от сред тестирования. И делать резервные копии !!!

...