Monthly Archives: May 2009

Blogatonas 2009

Prisidedu prie gražios iniciatyvos ir pasidalinu keliais įdomiais blog’ais, kuriuos skaitau:

  • Mr-Script – įdomios įžvalgos apie ekonomiką ir ne tik, savaitinė įvykių apžvalga;
  • scania gti – trumpai, bet į dešimtuką;
  • Veloklinika – neseniai atrastas dviračių remonto ir apskritai mylėtojų kompanijos blogas;
  • Zeitgeist idėjos Lietuvoje – retai, bet iš esmės;
  • Lyga.lt – apie verslą, sėkmę ir asmenybę.

Apie “Blogatoną“. Perėmiau iš Arūno Liuizos, o iškeliavo pas teenaciousd

Neskausmingas CSV su Rails

Ko gero nėra nė vieno programuotojo, per savo praktiką nesusidūrusio su duomenų “atidavimu” CSV formatu. Norėtųsi šią gan dažną užduotį padaryti švariai ir elegantiškai (Rails-way). Deja, Microsoft’o Excelis nėra toks draugiškas kaip OpenOffice (CSV atžvilgiu) ir ne visai draugauja su įprastais būdais atvaizduoti lietuviškus simbolius. Taigi trumpai pristatau savo būdą kaip paduoti vartotojui CSV patogiai mums ir tinkamai suderintą galutiniam vartotojui.Siūlau naudotis csv_builder įskiepiu, kurį aš šiek tiek papildžiau. Kadangi autorius kol kas neatsako į mano pull request, kviečiu naudotis mano kopija:

script/plugin install git://github.com/vidmantas/csv_builder.git

Arba parsisiųskit iš Github ir įkelkit į vendor/plugins direktoriją.Pluginas leidžia naudotis CSV formatui skirtu builderiu ir atsakyti į CSV formato užklausas. Tarkime, kad turime action’ą “index”:

def index  @users = User.all  respond_to |format| do    format.html    format.csv {      @output_encoding = 'UTF-16'      @csv_options = { :col_sep => "t" }    }  endend

Tokie nustatymai leidžia Exceliui suprasti lietuviškus simbolius ir teisingai interpretuoja atskirus įrašus. Tokį failą atidarinėjant su OpenOffice tereikia pasirinkti separatorių “Tab”.Tada šalia index.html.erb sukuriame failą index.csv.csvbuilder ir jame į csv kintamajį sudedame reikalingus duomenis:

csv Ir, be abejo, dar reikėtų apie tokią galimybę pranešti vartotojui:
link_to "Save as CSV", users_path(:format => :csv)

Sveikinu, viskas!Detalės:Šiam sprendimui reikia turėti įdiegtus fastercsv gems’ą (gem install fastercsv) ir veikiančią Iconv instaliaciją. @csv_options reikšmė yra FasterCSV#new metodui perduodami nustatymai. Apie kitus nustatymus žr. README. Tinka Rails >= 2.1P.S.: būčiau dėkingas, jeigu kas nors pasiūlytumėte kaip tokį plugin’ą testuoti ;-)