pusiing gmn caranya mengubah data di database sehingga menjadi
fixtures berformat yaml, setelah nyari2 plugin dan gemnya hiks gak
ketemu, kepaksa bikin sendiri dengan format abal2 dan ala kadarnya
(bukan dalam format rake pulak)
ini controllernya
class Data2yamlController < ApplicationController
FIXTURES_DIR="test/fixtures/"
SURVEYS_MODELS = ["quiz","question","quiz_option"]
QUIZME_MODELS = ["text_question","text_question_category","text_answer"]
#### desc ####
# this is controller to generate data to yaml files
# just type /data2yaml/dump/{model_name} on your browser
# also if you type /data2yaml/dump/survey, it will generate data
from Quiz,QuizOption && Question model
# and then if you type /data2yaml/dump/quizme, it will generate data
from TextQuestion,TextQuestionCategory & TextAnswer model
def dump
response.headers["Content-Type"]="text/plain"
@res=""
if params[:id]=="survey"
dump_models(SURVEYS_MODELS)
elsif params[:id]=="quizme"
dump_models(QUIZME_MODELS)
else
@res << "#### "+params[:id].camelize+" ###
\n\n"+generate(params[:id])
end
render :action=>"index"
end
def dump_models(models)
@res="" if @res.nil?
models.each do |list|
@res << "#### "+list.camelize+" ### \n\n"+generate(list)
end
end
def generate(model)
klass=model.classify.constantize
datas=klass.find(:all)
res=''
datas.each_with_index do |data,iterator|
i=iterator+1
res << model.camelize+i.to_s+": \n"
for column in klass.columns
res << " "+column.name+":
"+parsing_all(data.send(column.name)).to_s+"\n"
end
res << "\n" if datas.last
end
open(FIXTURES_DIR+model.tableize+".yml",'w') { |f| f << res }
return res
end
def parsing_all(data)
need_dq(data)
parsing_time(data)
end
### need double quote ?
def need_dq(data)
if data=="Yes" || data=="No" || data.class.to_s=="String"
data='"'+data+'"'
end
return data
end
def parsing_time(data)
if data.class.to_s=="Time"
data=data.strftime("%Y-%m-%d %H:%M:%S")
else
return data
end
end
end
ini viewnya disimpen di app/views/data2yaml/index.rhtml
<%= @res %>
catatan :
1.surveys sama quiz mah abaikan, kecuali kalo di aplikasi dikau ada
tabel2 itu :D
2.kalo ada isi data yg berformat paragraf, ketika melakukan
rake:db:fixtures:load bakalan error soale gak diapit sama tanda kutip
aku binun gmn caranya mengapit paragraf dengan tanda kutip soale gak
tau cara untuk menentukan suatu data dari mysql apakah string atau
integer, jadi kalo si data paragraf mau di load kembali ke database,
ya ubah aja manual, tambahin tanda kutip :D
3.ada yg mau convert ini ke rake ?
4.btw, di luar sana ada plugin/gem/rake yg fungsinya serupa ndak sih,
kalo ada kasih tau yak, secara coding di atas kelemahannya buanyak...
demikian, monggo kalo mo direview, dimodif menjadi lebih baik lagi
atau mo dicopas juga boleh, mudah2an berguna