giom
July 22, 2008, 4:33pm
#1
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.
giom
July 22, 2008, 4:46pm
#2
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] :
giom
July 22, 2008, 4:49pm
#3
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é.
giom
July 22, 2008, 5:00pm
#4
giom
July 23, 2008, 12:16pm
#5
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
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.
giom
July 23, 2008, 3:11pm
#6
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).