J'ai des données dans ma base de données de développement que j'aimerais utiliser comme éléments fixes dans mon environnement de test. Quel est le meilleur moyen dans Rails 2.x d’exporter une table de base de données vers un appareil YAML?
Réponses
Trop de publicités?J'ai été en utilisant YamlDb de sauvegarder l'état de ma base de données.
L'installer avec la commande suivante:
script/plugin install git://github.com/adamwiggins/yaml_db.git
Utilisez la tâche rake vider le contenu de Rails de la base de données db/données.yml
rake db:data:dump
Utilisez la tâche rake pour charger le contenu de la base de données/données.yml dans la base de données
rake db:data:load
C'est les créateurs de la page d'accueil:
http://blog.heroku.com/archives/2007/11/23/yamldb_for_databaseindependent_data_dumps/
Pour Rails 3, si vous voulez vider yaml de la base de données et l’utiliser en tant que fixture, j’utilise le code suivant:
module DbToFixture
TEMP_FIXTURE_PATH = Rails.root.join("test", "new_fixtures")
def fixturize(model)
Dir.mkdir(TEMP_FIXTURE_PATH) unless File.exists?(TEMP_FIXTURE_PATH)
fname = model.table_name
file_path = TEMP_FIXTURE_PATH.join(fname)
File.open(file_path, 'w') do |f|
model.all.each do |m|
f.write(m.to_yaml)
end
end
end
end
Je viens de le lancer depuis la console avec
require './lib/db_to_fixture'
include DbToFixture
fixturize ModelName
Je n'ai pas réussi à faire fonctionner ar_fixtures avec Rails 3 (je n'ai pas vraiment essayé). Yaml db est idéal pour la sauvegarde et l’enregistrement de la base de données, mais son format n’est pas compatible avec les appareils.
Iron Fixture Extractor a été conçu à cet effet. Cela convient particulièrement aux situations dans lesquelles vous souhaitez utiliser différents ensembles de montages pour différents scénarios de test (plutôt que d'avoir tous les montages pour tous les tests). Il fournit des fonctionnalités pour extraire, charger, reconstruire des fixtures, tronquer des tables ou capturer des hachages particuliers de vos fichiers yaml de fixture.