32 votes

Le meilleur moyen d’exporter une table de base de données dans un fichier YAML?

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?

24voto

Andrew Vit Points 10630

Il y a une tâche de rake pour cela. Vous pouvez spécifier RAILS_ENV si nécessaire. la valeur par défaut est l'environnement de développement:

 rake db:fixtures:dump
    # Create YAML test fixtures from data in an existing database.
 

21voto

Geekygecko Points 1984

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/

9voto

Brian Armstrong Points 8259

Ce plugin va ajouter la fonctionnalité que vous voulez. Il a été extrait d’ActiveRecord et ne vient donc plus par défaut.

script/plugin install

Puis lancez:

http://github.com/topfunky/ar

6voto

jpgeek Points 1673

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.

4voto

Joe Goggins Points 516

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X