YAML / ActiveRecord / importation

Bonjour,

J’ai un fichier YAML de données de départ pour ma base qui contient
plusieurs enregistrements :

[startdata.yml]

enregistrements

  • enregistrement1
    name : toto
    firstname : titi
  • enregistrement2
    name : toto
    firstname : titi
  • enregistrement3
    name : toto
    firstname : titi

J’ai une méthode importdata dans mon model enregistrement.

def importdata
config = YAML::load_file(./config/startdata.yml)
config.each do
obj = new enregistrement(config[name],config[firstname])
obj.save
end

Grosso modo.

J’ai pas mal écumer les forums et les tutoriaux mais je n’arrive pas Ã
comprendre la philosophie d’import YAML//ActiveRecord.

J’ai donc deux petites questions :

  • Quelle est la norme de chemin d’un fichier “conf” ? Moi, je l’ai mis
    dans “config”, est-ce en général l’endroit ad hoc ?
  • Est-ce que mon approche est bonne ? Ou me suis-je complètement
    fourvoyé sur la méthode ?

Bonne journée à tous et merci de vos éventuelles réponses.

Petite question :
Il s’agit vraiment d’un fichier de conf ou d’un fichier d’import ?

Si il s’agit d’un fichier d’import nécessaire au bon fonctionnement de
l’application, moi je le place dans db/migrate et je le charge avec un
fichier de migration.

2008/7/22 Guillaume M. [email protected]:

guillaume belleguic wrote:

Petite question :
Il s’agit vraiment d’un fichier de conf ou d’un fichier d’import ?

Si il s’agit d’un fichier d’import nécessaire au bon fonctionnement de
l’application, moi je le place dans db/migrate et je le charge avec un
fichier de migration.

Bonne question. Là c’était juste un essai pour voir si j’etais capable
d’importer des données (donc pour l’instant non lol).

Mais en fait, à terme, ce sera surement un fichier d’import de données
donc l’approche migration me semble la bonne en effet.

Mais j’aimerais savoir si du coup, il est necessaire de faire du code
derriere (le point 2 de ma question).

Merci de cette petite question qui m’aura éclairé.

ca peut t’aider :
Loading data in migrations – /bin/recykl j’ai
pas
testé.

2008/7/22 Guillaume M. [email protected]:

En fait, ce n’est pas tout à fait ceci. ça m’a permis d’avancer dans mes
recherches tout de même.

Mais j’ai maintenant un autre probleme de noob :slight_smile:

La problematique est la meme : importer un fichier yaml mais à la
différence pres que celà se fait sur action utilisateur.

J’ai donc ma fonction “importdata” dans mon controller qui a cette tete
:

def importdata
puts “importdata”
config = YAML::load_file(’#{RAILS_ROOT}/config/startdata.yml’)
puts config
config.each do |x|
@obj = obj.new(x[‘name’],x[‘firstname’]])
@obj.save
end
end

Dans ma vue, j’ai mis le code suivant :

<%= link_to ‘Import data’, :action => ‘importdata’, :controller
=>‘moncontrolleur’ %>

Mais j’ai l’impression que mon lien ne fonctionne pas. En effet, j’ai
mis un puts “importdata” au debut de ma fonction mais je ne le vois pas
quand je clique sur mon lien.

Y’aurait-il quelque chose qui m’a echappé ? (surement vu mon niveau)

Merci d’avance pour vos réponses et bonne journée.

Salut,

Guillaume M. a écrit :

Dans ma vue, j’ai mis le code suivant :

<%= link_to ‘Import data’, :action => ‘importdata’, :controller
=>‘moncontrolleur’ %>

Mais j’ai l’impression que mon lien ne fonctionne pas. En effet, j’ai
mis un puts “importdata” au debut de ma fonction mais je ne le vois pas
quand je clique sur mon lien.

Y’aurait-il quelque chose qui m’a echappé ? (surement vu mon niveau)

puts n’affiche rien sur la page car il agit sur la sortie standard, du
coup c’est dans ta console (la ou tu as lancé ton serveur) que tu
pourras voir ton texte.

Pour “contourner” le problème tu peut utiliser render :text =>
“montexte”, ou un logger (toutefois on ne peut pas enchaîner les render
donc il te faudra construire un tableau ou autre si tu veut faire comme
cela).