Draqun  
                
                  
                    October 31, 2014, 10:57am
                   
                  1 
               
             
            
              Witam.
Mam dość niespotykany problem. Mianowicie wczytuję sobie plik CSV
CSV.foreach( "#{directory}/article_groups.csv" , { :col_sep => ';', headers: true } ) do |row|
    STDERR.puts row.inspect
    STDERR.puts row["article_group_id"]
    STDERR.puts Article.create!( id: row["article_group_id"], name: row["desc_de"] ).inspect, ""
end
Plik mam w dwóch wersjach. Pełen (~200K elementów) i jego wersja skrócona do ~20 elementów dla testów i teraz jak odpalam na testowym to otrzymuję to czego się spodziewam.
#<CSV::Row "article_group_id":"241" "owner_group_id":"NULL" "level":"1" "desc_de":"Radlager" "complex_desc_de":"Radlager" "row_date":"2014-10-15 10:41:47.663">
241
#<ContextItemGroup id: 241, name: "Radlager", created_at: "2014-10-31 10:49:22", updated_at: "2014-10-31 10:49:22">
Tymczasem gdy odpalę na pełnym pliku otrzymuję
#<CSV::Row "<U+FEFF>article_group_id":"241" "owner_group_id":"NULL" "level":"1" "desc_de":"Radlager" "complex_desc_de":"Radlager" "row_date":"2014-10-15 10:41:47.663">
#<ContextItemGroup id: 1, name: "Radlager", created_at: "2014-10-31 10:40:56", updated_at: "2014-10-31 10:40:56">
Dane wejściowe oczywiście są takie same. Pliki różnią się tylko ilością danych.
Oczywiście jest to bardzo ważne dla mnie aby otrzymywać te dane. Inne dane oczywiście się się wyświetlają. Problem zawsze jest z 1 kolumną pliku CSV.
             
            
              
            
           
          
            
              
                Draqun  
              
                  
                    October 31, 2014, 11:12am
                   
                  2 
               
             
            
              Po wywołaniu w VIM
plik wczytuje się poprawnie. Niestety nie będę miał zawsze możliwości przeglądania tych plików. Da się jakoś to zrobić programowo?
             
            
              
            
           
          
            
            
              Spróbuj dodać:
             
            
              
            
           
          
            
              
                Draqun  
              
                  
                    October 31, 2014,  1:22pm
                   
                  4 
               
             
            
              Uzycie
 Draqun:
 
CSV.foreach( “#{directory}/article_groups.csv”, "r:bom|utf-8’ , { :col_sep => ‘;’, headers: true } ) do |row|
 
 
powoduje
rake aborted!
ArgumentError: wrong number of arguments (3 for 1..2)
/home/damian/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/csv.rb:1119:in `foreach'
 
            
              
            
           
          
            
              
                Draqun  
              
                  
                    October 31, 2014,  1:51pm
                   
                  5 
               
             
            
              Ok działa. Zajrzałem w implementacje foreach i zaminiełem kod na
CSV.open( "#{directory}/article_groups.csv", "r:bom|utf-8" , { :col_sep => ';', headers: true } ) do |csv|
  csv.each do |row|
    STDERR.puts row.inspect
    STDERR.puts row["article_group_id"]
    STDERR.puts Article.create!( id: row["article_group_id"], name: row["desc_de"] ).inspect, ""
  end
end
Wielkie dzięki.
             
            
              
            
           
          
            
            
              Właśnie chciałem to zasugerować, ale cieszę się że moja sugestia znalazła zastosowanie 
             
            
              
            
           
          
            
              
                Draqun  
              
                  
                    October 31, 2014,  3:01pm
                   
                  7 
               
             
            
              Najbardziej mnie cieszy to, że powoli zaglądam do kodu railsów i zaczynam rozumieć ten miszmasz 
             
            
              
            
           
          
            
              
                wafcio  
              
                  
                    October 31, 2014,  3:09pm
                   
                  8 
               
             
            
              
w django wiele rzeczy trzeba napisać samemu, w railsach wiele rzeczy robionych jest za programiste automatycznie
             
            
              
            
           
          
            
              
                Draqun  
              
                  
                    November 3, 2014,  6:06am
                   
                  9 
               
             
            
              
Tak, ale programista ma większą kontrolę nad tym co robi